Ответы пользователя по тегу HTML
  • Лучший ЯП для парсинга веб-сайтов

    seriyPS
    @seriyPS
    У меня половина опыта работы — именно написание пауков и веб-парсеров.
    Писал их и на PHP + CURL, потом на голом питоне + треды.
    Потом узнал о Scrapy (асинхронный фреймворк для граббинга сайтов на Python) и на нём штук 5 независимых проектов реализовал, в том числе один, где нужно аггрегировать и периодически обновлять информацию с 20 различных форумов. Основная его проблема — он асинхронный, но однопоточный. Так что больше одного ядра им не нагрузить и долгий запрос к БД не сделать. А так очень хороший фреймворк.
    Потом несколько пауков делал на Python с помощью Celery.
    А совсем недавно переписал довольно сильно нагруженного паука (50-70Мбит/с через списки прокси) с Python + Celery на Erlang и понял, что это ОНО! Мало того, что стал работать в 2-3 раза быстрее, но понял, что для этой задачи что-то более подходящее сложно придумать.
    Поясню — у паука на Erlang можно без остановки процесса, например, изменить число потоков, обновить код, перезагрузить конфиги. Можно на ходу отпрофилировать код чтобы узнать, почему скорость упала или что так нагружает CPU. Можно совмещать зеленые потоки, асинхронную работу с сетью и долгие запросы к БД. И всё это фактически из коробки. В конце концов, код получается более логичный.
    Ответ написан
    3 комментария
  • Где расположить html страничку?

    seriyPS
    @seriyPS
    если голый HTML без серверсайда то что угодно выдержит
    Ответ написан
    Комментировать
  • С помощью чего можно вытащить из сотни html документов содержимое определенных тегов и поместить в один текстовый документ?

    seriyPS
    @seriyPS
    хм… lxml.de/lxmlhtml.html

    from lxml import html
    import os
    
    with open("../results.txt", "w") as f:
        for fname in os.listdir('./'):
            tree=html.parse(fname)
            body_content=tree.xpath("//body")[0] 
            all_body_text=body_content.text_content() #только текст из всех descendant-or-self
            body_content_with_markup=body_content.tostring(body_content) #текст и разметка descendant-or-self
            result=some_processing("какой-либо из предыдущих результатов") # какие-то доп. замены и манипуляции
            f.write(result) # запихиваем все в один файл
    

    Но если более конкретно скажете что нужно извлечь и какие трансформации нужно проделать — напишу более подробно. Может и на XSLT будет проще, если автозамены касаются в основном тегов.

    Если на баше — то есть xmllint, который позволяет в том числе и xpath запросы выполнять
    xmllint --html --xpath //body

    Регулярки ни в коем случае не используйте ибо stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags/1732454#1732454
    Ответ написан
    Комментировать
  • Влияют ли микроформаты на позицию сайта в выдаче Яндекса?

    seriyPS
    @seriyPS
    help.yandex.ru/webmaster/?id=1111670 и плюс только что на хабре пост от яндекса на эту тему habrahabr.ru/company/yandex/blog/105370/
    Ответ написан
    Комментировать