webdevfan
@webdevfan
CEO & Co-Founder "Wacdis"

Как сделать сложный парсинг страницы?

Спасибо, что заглянули...

Стоит не простая (для меня) задача. Как получить код страницы, которая находится по URL, если:
  1. нужна эмуляция браузера, страница защищена каким-то алгоритмом, отличающим браузер от юзера
  2. нужно парсить html, который подгружается динамически после заполнения формы

Т.е., алгоритм следующий: эмуляция браузера, заполнение полей формы, ожидание ответа, парсинг данных.

Кто встречался с данной задачей хоть частично, дайте, пожалуйста, наводку или пример на чем писать, куда копать. Язык и платформа не важна. Спасибо.

p.s. Задача абстрактная... Поставил перед собой задачу написать парсер. Сложный (для меня, по крайней мере). Например, спарсить результаты поиска aviasales или получить данные после авторизации в ebay.
  • Вопрос задан
  • 1506 просмотров
Решения вопроса 3
evnuh
@evnuh
Поиск Гугл помог мне, впусти и ты его в свой дом
У вас в вашей веб студии ни одного программиста нет?

Наводка простая - смотрите инспектором на AJAX запрос, копируете его для cURL (правой кнопкой по самому запросу, скопировать как cURL) и повторяете, собственно, курлом. Если ответ такой же, значит вы уже решили задачу и осталось лишь распарсить данные.
Ответ написан
edli007
@edli007
full stack, team lead
Обычно сервер цепляет какие-то доп. данные, так и понимает это это не браузер.

1. Берешь курл, открывает страницу с формой, с набором заголовков от любого браузера(фаербагом глянь)
2. Запоминаешь все поля формы, включая пустые и все куки. В форму часто добавляют подпись а в заголовки сессию. Особо хитрые видят что форму не открывали, так значит и отправки быть не должно. Этот пункт все эти проблемы решает.
3. Смотрим на наличие доп. запросов, включая запросы на других протоколах, например ws. Некоторые сайты получают цифровые подписи через доп. запрос а не сразу. Если есть - добавляешь эти данные к предыдущим.
4. Отправляешь запрос с массивом собранных данных, получаешь результат. Еще не видел чтобы это хоть раз не сработало.
Ответ написан
@VZVZ
Reverse-Engineer, Software Developer, Architect
Учитесь сниффить (Fiddler, Wireshark...), HTTP осваивайте, начинать советую с имитации не браузера, а голых HTTP-запросов как с решения геморройного (если их много или требуется качество), но зато универсального и быстродействующего (быстрее браузера), в дальнейшем осваиваем Phantom.js или Selenium, которые в уже умелых руках могут изменить пропорцию "геморрой / качество имитации" в лучшую сторону.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы