Pull to refresh

Comments 34

Интересный продукт, спасибо!
Подскажите, а Scrapinghub умеет работать с «динамическими» страницами с большим количеством JS? Например, ждать появления какого либо элемента страницы, прежде чем начать парсить страницу.
Это крайне нетривиальная задача, а тут обычный паук, вам нужен куда более «сообразительный» парсер.
Тривиальная но крайне требовательная к ресурсам — так имхо правильнее. На фантоме пишется за вечер. Я писал.
Для одного сайта. После того как вы посмотрели его глазами и нашли к чему привязаться в xpath (теги, id, вложенность). И написали скрипты именно для этого сайта. А сайтов тысячи.
Мы похоже про разные вещи говорим.
дернули спашку, отрендерили в фантоме, слили построенный дом — дальше можно индексировать как обычную статику. Про эмуляцию действий пользователя речи не шло.
Ок. Отрендерили вы DOM, а если на живом сайте скролить вниз происходит подгрузка данных. То есть на первом шаге вы не получает все данные. Если это не критично, то конечно так можно поступить.
В целом согласен с вами фантом не предоставляет подобного функционала и обычно делаеться это либо ожиданием появления какого то элемента либо функцией которая запускаеться после полной загрузки страницы и переодически проверяет не появились ли новые запросы в течении какого то времени и если нет то считается что сайт отренедрился
а это уже селениум c драйвером фантома. Но тут да — под каждый сайт (движок) свои хаки. Ну или подождать сильный ИИ )

Если сайт не сильно мудреный — можно делать AJAX запрос руками. В большынстве случаев такой способ роботоспособный.

Да, в таком юзкейсе Вы правы и это очевидно. Я говорил именно об индексации страниц, генерируемых js без действий пользователя. Их тоже немало, других простых способов решить вопрос — нет, гугль, насколько мне известно поступает также.
Колесико мышки-то сейчас имеет смысл эмулировать для всех сайтов.
На 99,9999999% решит вопрос подгрузки страницы.
Пока что только применительно к конкретному веб-сайту. У нас есть своя разработка https://github.com/scrapinghub/splash
Возможно перед HBase поставить фильтр Блума, чтобы поменьше его кантовать? Или там иного рода проблемы?
Я далек от Web'а, и сейчас, наверное, моя карма уйдет в небытие =), но подскажите, правильно ли я понял, разрабатывается фреймворк, который исполняет роль поисковика?
Этот фреймворк скачивает документы из сети. Скачанный контент может использоваться для построения поисковика.
UFO just landed and posted this here
Это тоже верно. Просто по мере разработки мы поняли, что стратегия обхода отдельно от хранилища и от других компонент, отвечающих за обмен данными не представляет большой пользы. В результате мы разработали эти компоненты и приняли решение, что Фронтера будет навязывать архитектуру всего робота. При этом мы старались сделать её максимально расширяемой.
UFO just landed and posted this here
Использование Scrapy не является обязательным при построении роботов на Fronter'е. Но если Вы берете воркер стратегии, разрабатываете под него стратегию обхода, то должны будете считаться с тем, как во Fronter'е реализован менеджмент состояний, очередь и обмен данными между компонентами.
Он роль поискового робота выполняет.
UFO just landed and posted this here
Скорее наоборот, это понимание у них не появится пока они не возьмут и не попробуют. А вот с этим у нас не все хорошо.
UFO just landed and posted this here
UFO just landed and posted this here
>Разнится скорость ответа веб-серверов, размер и количество страниц на сайте

Учитываете ли при работе данные с robots.txt (второй версии желательно) Если от ваших запросов сервер начинает тупить — мониторите/замеряете/корректируете частоту запросов?

Писал паука для одного из проектов, имхо — если не самая сложная то одна из по головоломности частей получилась как раз работа с robots.txt Но у меня там еще загон был — разные политики по юзер-агенту (статичный, round-robin, кастом) и юзерагент мог как учитываться так и нет при обработке robots (в зависимости от настроек)
Статья про фреймворк, а не про конкретный робот. Есть два способа обрабатывать robots.txt в рамках Fronter'ы и Scrapy. Самое простое, это использовать RobotsTxtMiddleware в Scrapy. Перед обработкой URL запрашивается robots.txt с домена, кешируется, и все запросы к домену проверяются если допустимы в рамках robots.txt домена.
Второй способ, это интегрировать обработку robots.txt в стратегию обхода, и попросту не планировать URL, которые запрещены в robots.txt.
allow/disallow отрабатываются тривиально, речь шла о нормальной работе с Request-rate и Visit-time. Но ответ Ваш я понял, спасибо!
Люди, которые научатся доставать исходные данные из react-кода без выполнения js — озолотяться
Что вы под этим подразумеваете? Какой юзкейс?
Юзкейс прост — экономить деньги/время. Вместо запуска фантомов для выполнения js — простой curl

Я так понимаю, автор имеет отношение к Scrapinghub. Скажите, а ваша Portia — она насколько стабильно работает и насколько сложный парсинг поддерживает?


Попробовал вчера hosted версию — при работе с переменным числом блоков эвристики постоянно промахиваются, и получается мусор. При попытке выгрузить "накликанный" парсер в формате Scrapy — выгружает что-то похожее на mock'овый код — модельки описаны, а алгоритм парсинга — нет.

Насколько знаю, внутри portia — библиотечка https://github.com/scrapy/scrapely. Ну т.е. там еще куча всего есть, но вроде дефолтное извлечение выполняется именно через scrapely. Это и есть алгоритм парсинга.
Пришлите конкретные поля/запросы, мы посмотрим со своей стороны.
Sign up to leave a comment.

Articles