Различия в настройках PuppeteerCrawler и Task - PullRequest
0 голосов
/ 08 октября 2019

Я переместил сканер в задачу с помощью legacy-phantomjs-crawler (Task-Version) и из соображений эффективности и лучшего дизайна перестроил его как чистый Act с использованием PuppeterCrawler (Act-Version). Сравнивая обе версии, оказалось, что Task-Verion примерно в два раза быстрее, чем Act-Verion. Я подозреваю, что это как-то связано с различиями в настройке, особенно в зависимости от времени ожидания навигации. Но я не уверен.

Почему скребок как задание быстрее, чем как акт, с более или менее одинаковой логикой? Каковы различия в настройках между Act с PuppeterCrawler и Task с legacy-phantomjs-crawler? Как настроить Act с помощью PuppeterCrawler, чтобы получить ту же производительность, что и задача с legacy-phantomjs-crawler?

Cheers Wolfgang

1 Ответ

0 голосов
/ 08 октября 2019

Причиной этого различия является базовая технология, используемая в этих двух решениях.

legacy-phantomjs-crawler использует PhantomJS в качестве движка рендеринга. PhantomJS очень быстрый, но, к сожалению, он больше не поддерживается разработчиками, и многие веб-сайты запрещают доступ при обнаружении PhantomJS. Также он не поддерживает современный javascript ( es6 и более поздние ), поэтому некоторые современные веб-сайты не загружаются.

PuppeteerCrawler использует браузер chrome / chromium, управляемый через javascript, в качестверендеринг движка. Это медленнее, чем PhantomJS, потому что происходит больше процессов, но современные веб-сайты и сайты, которые блокируют PhantomJS, обычно работают хорошо.

Есть еще одна опция, а это CheerioCrawler , которыйдаже быстрее, чем PhantomJS, потому что он даже не отображает веб-сайт и не обрабатывает javascript, он работает только с HTML-кодом загруженной страницы. Обычно это лучший вариант, если веб-сайт, к которому вы хотите получить доступ, не использует JavaScript для загрузки данных и не имеет защиты от обычных сетевых запросов.

К сожалению, в нашем SDK мы больше не предоставляем поддержку PhantomJS, главным образомпотому что мы сталкивались с новыми проблемами, когда страницы блокировали или не загружались. Вы можете ускорить поиск кукловода, блокируя ненужные ресурсы и ожидая правильных событий во время навигации. Здесь - это, например, функция, которая может помочь вам заблокировать то, что вам не нужно загружать со страницы.

...