необходимо спарсить информацию, прошу посоветовать минимально необходимый набор инструментов для парсинга.
с python поверхностно знаком.
- запросы к странице через Tor
-авторизоваться на сайте(bitrix)
- забрать данные в таблицы
- перебрать много страниц с таблицами, забирая данные (данные не скрыты, отдаются сервером сразу при загрузке страницы, и доступны через Xpath запросы).
- нужно имитировать реальный браузер
я так понимаю методов обнаружения что запрос страницы не от обычного браузера достаточно много. и это не только UserAgent.
вопрос в том какой инструмент максимально эффективно работает как реальный браузер из коробки.
хотя я честно сказать не уверен что разработчики сайта вообще используют защиту от парсинга данных.
кажется я видел scrapy в виде расширения для Crome . или это другое.
У scrapy прекрасные возможности из коробки.
По опыту парсинга более 500 сайтов все можно имитировать. И ajax и заголовки разные и прочее.
Selenium это по сути инструмент для управления браузером изначально предназначен для тестирования а не парсинга.
Ну что вы подразумеваете по имитацией?
Все заголовки вы может вручную указать. .
Под имитацией обычно подразумевается точно такое же поведение.
Например загрузка и выполнение JS скриптов.
Scrapy работает только с текстом страницы, он не исполняет код - если нужной информации нет на странице он ничего не спарсит. Ибо нечего.
А сейчас во многих случаях информация которую хотят спарсить содержится не в теле страницы, а отдается на запрос JS скрипта.
Так же на многих ресурсах стоит защита от парсинга - проверяется браузер работает или нет.
Если таких проверок нет и вся информация доступна на странице - парсить можно чем угодно, в том числе и scrapy, имитация браузера не нужна.
Во первых можно использовать splash в придачу к scrapy.
Во вторых вы можете сами из scrapy послать запрос, получить Javascript который вам нужен и его распарсить.
Есть крутая защита от distil networks, которая проверяет кучу переменных браузера, в т.ч. как он рендерит видео и многое другое.
Если знать, что выполняет Javascript и что нужно отдать, то и такие защиты можно обходить.