Этот вопрос закрыт для ответов, так как повторяет вопрос Блокировка ip при парсинге cURL php?
@fobya

Как сделать парсер крупных сайтов и маркетплейсов на PHP, обходящий блокировки?

Сам вопрос:
Подскажите, что именно стоит изучать, на что акцентировать внимание, какие библиотеки использовать, чтобы создать желательно быстрый парсер маркетплейсов на PHP?
Если подробнее:
Посоветуйте,какой стек использовать, что почитать и изучить, чтобы реализовать следующий функционал:
Вводится в форму на сайте название определенного товара -> нажимается кнопка поиска -> формируется ссылка ( например для ВБ по этому товару -> парсятся определенные данные, типа цены, названия -> выводится на сайт.
Желательно, чтобы этот парсер работал асинхронно без перезагрузки страницы.

В общем мне нужно сделать парсер на PHP, который смог бы обходить блокировку таких сайтов, как Озон,Вайлдберриз, Яндекс.маркет, Авито, Леруа Мерлен и т.д.

Я пытался парсить с помощью guzzle+curl+phpQuery, но получалось только на мелких сайтах.

Если вы можете точно сказать, как это можно проще реализовать, но на другом языке, например, Python, то это тоже может помочь, только скажите, можно ли будет использовать парсер от Python на PHP сайте?

Я буду рад, даже если вы просто посоветуете, где найти качественную книгу/подробную статью о парсерах на PHP и обходе защиты от парсинга.
  • Вопрос задан
  • 407 просмотров
Решения вопроса 1
dbkv
@dbkv
backend developer
Подскажите, что именно стоит изучать, на что акцентировать внимание, какие библиотеки использовать, чтобы создать желательно быстрый парсер маркетплейсов на PHP?

Зависит от ваших текущих знаний. Написать парсер сайтов можно на любом языке программирования, при желание. Удобнее всего, на мой взгляд сделать это на Python с использозованием библиотеки -- https://www.crummy.com/software/BeautifulSoup/bs4/doc/ либо на NodeJS.

Посоветуйте,какой стек использовать, что почитать и изучить, чтобы реализовать следующий функционал:

Python / Request / BeautifulSoup4 либо NodeJS / Axios / node-html-parser. Если осмелитесь писать на PHP, что на мой взгляд крайне не удобно, то guzzle + phpQuery, как вы уже сами и написали.

Также, сейчас на многих сайтах используется технология SPA и клиентский рендеринг. Если в кратцы - то контент на сайт подгружается через API и рендерится с помощью JS. Если в тупую обратиться к такому сайту с сервера (например через curl), то с высокой долей вероятности мы получим пустую страницу.

Для таких сайтов нужно использовать эмуляторы браузеров, например seleniumhq.org или https://pptr.dev/. Биндинги есть на Python и NodeJS, возможно и на PHP.

можно ли будет использовать парсер от Python на PHP сайте?

Да, можно просто написать API на Python и поднять сервис на отдельном поддомене или порту, а далее в JSON-формате возвращать данные на сайт и делать с ними дальнейшие операции.

На счет обхода блокировок. Стоит сказать сразу, что блокировки будут всегда, поэтому при разработке парсера надо обязательно предусмотреть следующее:


1. Каждый запрос рандомизируем заголовки (request headers) и User-Agent. Обязательно. Тут без вариантов.

2. Делаем запросы исключительно через proxy + каждый запрос рандомизируем их. В идеале иметь пулл из ~20 проксей. Крайне желательно чтобы прокси были приватными.

3. Если уперлись в капчу, то делаем повторный запрос с другой прокси, если сайт ни в какую не хочет нас пускать к контенту, то разгадываем капчу. Либо реализуем разгадывание руками пользователя (т.к у вас интерфейс есть), либо с помощью любого сервиса разгадывания капчи, типа https://capmonster.cloud/ru/ или https://rucaptcha.com/.

Надеюсь я смог прояснить некоторые технические детали парсинга сайтов.
Ответ написан
Ответы на вопрос 1
Vextor-ltd
@Vextor-ltd
Webdeveloper
Для начала изучи регулярные выражения.
Ответ написан
Ваш ответ на вопрос

Вопрос закрыт для ответов и комментариев

Потому что уже есть похожий вопрос.
Похожие вопросы