Подождите, пока результат загрузится в Python Data Scraping - PullRequest
0 голосов
/ 30 мая 2018

Я кодирую сборщик данных, но я не знаю, что делать для Python, дождавшись запроса, который я сделал для загрузки.

Я вытягиваю таблицу по этой ссылке: http://www.ans.gov.br/perfil-do-setor/dados-e-indicadores-do-setor/sala-de-situacao

Перейти к Caderno 2.0 Выберите первое значение в раскрывающемся списке Выполнить что-либо

Большой вопрос здесь: когда я запускаю запрос на веб-сайте, веб-сайту требуется некоторое время, чтобыполучить вывод, поэтому мне нужно выяснить, как перевести Python в режим ожидания, пока не получится результат (см. рисунок ниже)

Сообщение о выполнении изображения

Может кто-нибудь помочьмне с этим?Пожалуйста.

Большое спасибо!

1 Ответ

0 голосов
/ 30 мая 2018

Причина, по которой сайт загружается так долго, в том, что он использует тяжелый Javascript для отображения страницы.

Вы можете использовать Splash , который используется для визуализации на основе Javascriptстраницы.Вы можете довольно просто запустить Splash в Docker и просто отправлять HTTP-запросы в контейнер Splash, который будет возвращать HTML, который выглядит как веб-страница, отображаемая в веб-браузере.

Хотя это звучитСлишком сложный, на самом деле его довольно просто настроить, так как вам вообще не нужно изменять образ Docker, и вам не нужны предварительные знания Docker, чтобы заставить его работать.Для запуска локального сервера Splash требуется всего одна строка:
docker run -p 8050:8050 -p 5023:5023 scrapinghub/splash

Время ожидания по умолчанию составляет 30 секунд, но в случае, если вам нужно подождать, пока страница отобразится, вы можете указатьдругой таймаут в качестве аргумента.Например, для тайм-аута в 300 секунд:
docker run -it -p 8050:8050 scrapinghub/splash --max-timeout 300

Затем вы просто изменяете любые существующие запросы в вашем коде Python, чтобы вместо них направлять всплеск:

т.е. http://example.com/ становится
http://localhost:8050/render.html?url=http://example.com/


В качестве альтернативы, вы можете использовать Selenium в качестве другого пользователя, указанного выше, но мне лично было проще использовать Splash.

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