Задать вопрос
@ant123455432143

Как спарсить Интернет Магазин?

Нужно собрать характеристики по огромному списку моделей товаров .
Проблема: обычный PHP через
file_get_contents('https://www.dns-shop.ru')
или cURL отдает 401. Как я понял, там стоит защита Qrator.
Как вариант было предложено использование Python + Selenium.
То есть вводить каждую модель в строку поиска через headless-браузер -> переходить в карточку -> кликать "Развернуть характеристики" -> забирать HTML.
Но как я понимаю, огромное количество моделей товаров так не прогонишь? Может есть вариант получше? Или это единственный?
  • Вопрос задан
  • 319 просмотров
Подписаться 1 Простой 3 комментария
Помогут разобраться в теме Все курсы
  • Stepik
    4в1—Парсинг, Асинхронность, Многопоточность, Многопроцессорность
    2 месяца
    Далее
  • Хекслет
    Фронтенд-разработчик
    10 месяцев
    Далее
  • Skillfactory
    Профессия Python-разработчик PRO
    12 месяцев
    Далее
Пригласить эксперта
Ответы на вопрос 4
@rPman
Не улететь в бан ... универсально не получится, это вопрос даже не технологии. Крупная площадка имеет возможность финансово поддерживать борьбу с парсерами.

Могу предложить решение - напиши расширение для браузера, без обмана, работающее с целевым интернет магазином, удобное с полезным для пользователя функционалом, вложись в маркетинг,.. и собирай информацию с помощью этого расширения. Это способ имеет шанс работать универсально, так как большое количество пользователей размажет по интернету собственно процесс парсинга и его сложнее будет детектировать владельцу магазина (зависит от того как будет работать это расширение и на сколько оперативно будет правиться его код при изменениях на сайте).

Все остальные способы скорее всего будут задетектированы и заблокированы.
Ответ написан
Комментировать
VoidVolker
@VoidVolker
Dark side eye. А у нас печеньки! А у вас?
реально ли вообще пробить эту защиту на чистом PHP

Если на сайте используется SSR и нужные вам данные сразу отдаются на странице — то да, вполне можно всё спарсить. В ином случае придётся использовать браузерный движок — для селениума есть обёртки для разных ЯП, нет строгих ограничения только для питона. Методика обхода защиты строится от самой защиты — она исследуется и пишется соответствующая логика.
Ответ написан
Комментировать
Конечно можно использовать PHP для парсинга контента. Есть много тразных библиотек для парсинга на PHP: DiDom, Guzzle и другие.
Selenium - необходим для парсинга SPA сайтов - контент которых формирутся JS на строне клиента. Для обычных сайтов он не нужен. Есть другие варианты - замены Selenium. К примеру, WBApp2 - сохранить по ссылкам страницы в НТМL - файлы локально, и уже по ним парсить контент.
Но по моему мнению парсинг на Python удобней и проще. Огромное количество популярных, хорошо документированных билиотек для парсинга: BeautifulSoup, fake_useragent и другие.
При понимании процесса, накидать простой скрипт для парсинга на Python, не займет много времени.
Ответ написан
Комментировать
oOLokiOo
@oOLokiOo
PHP Developer
PHP и обычный:

$dom = new DOMDocument();
$page = file_get_contents('http://...'); // your URL here
// $page = gzdecode($page); // иногда нужно и так после обычного file_get_contents
$dom->loadHTML($page, LIBXML_NOERROR);
$xpath = new DOMXPath($dom);
$id = 'xXx'; // your ID/CSS Class here
$content = $xpath->query('//div[@id="'.$id.'"]')->item(0);
$anchors = $xpath->query(".//a", $content); // get all links

и погнал там фигачить с этим $xpath как твоей душе угодно дальше, короче! ;)

сколько парсеров не переписал в своей жизни, только Даааавным Давно сторонний simple_html_dom.php подрубал!) тогда ещё и PHP 4 был вроде и я маленький был и встроенного в PHP 4 "из коробки" - ничего полезного не было... так что - норм он тогда помогал! и даже с CSS селекторами - Хорошо работал!

а потом уже - на "Чистом" PHP все парсеры у меня были! ;)
Удачи!

p.s. "до кучи" - в PHP есть ещё и sleep(), но на практике, я его НИ РАЗУ не юзал... но вдруг там какой сервак на частые запросы настроен и обрубать твой Парсер злобный будет, просто Знай что он есть ;)
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы