Как собрать информацию с сайта, который не использует POST - PullRequest
0 голосов
/ 02 сентября 2018

Мне нужно получить некоторую информацию с веб-сайта, который использует HTML-фильтр для фильтрации своего контента. Однако у меня возникают трудности с этим, поскольку при изменении значения из выбора веб-сайт не «перезагружается», а использует некоторую внутреннюю функцию для получения нового контента.

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

index.php? Ид = dmmjobcontrol & тип = дисциплина & UID = 77 & _ = 1535893178522

Интересно, что uid является идентификатором опции select, поэтому мы получаем правильный идентификатор. Однако, когда я перехожу по этой ссылке, я просто получаю страницу с текстом null.

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

Я довольно новичок в чистке и, честно говоря, я не понимаю, как я могу получить эту информацию. Если это для какого-то использования, я использую scrapy в python для анализа информации с веб-сайтов.

1 Ответ

0 голосов
/ 02 сентября 2018

Одним из решений является использование клиентского уровня, который выполняет как ваш «скрипт», так и весь javascript, отправленный веб-сайтом, имитируя реальный браузер. Я успешно использую PhantomJS для этого вместе с Selenium aka Webdriver API: https://selenium -python.readthedocs.io / посаживания started.html

Обратите внимание, что исторически Selenium был первым продуктом, сделавшим так название этого API. На мой взгляд, PhantomJS лучше подходит, по умолчанию без головы (не запускает процесс графического интерфейса) и быстрее. И Selenium, и PhantomJS реализуют протокол, называемый Webdriver, который будет использовать ваша программа на Python.

Это может показаться сложным, но, пожалуйста, просто используйте приведенную выше документацию по началу работы и проверьте, подходит ли она вам.

EDIT: эта статья также содержит простой пример использования описанной установки: https://realpython.com/headless-selenium-testing-with-python-and-phantomjs/

Обратите внимание, что во многих статьях люди делают подобное для тестирования, поэтому термин "выскабливание" даже не упоминается. но технически это то же самое - эмуляция нажатия пользователем в браузере и в конце получение данных от определенных элементов страницы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...