Как я могу очистить эту страницу с помощью селена и хромодрайвера на языке python? - PullRequest
0 голосов
/ 29 мая 2020

Я пытаюсь очистить данные с веб-сайта «http://www.nmpa.gov.cn/», используя селен и хромированный драйвер. Когда я запускал код, chromedriver успешно ввел URL-адрес, но не смог загрузить страницу, отображая пустую страницу. Я попытался переключить целевой веб-сайт на google.com, и мне удалось выполнить парсинг. Я пришел к выводу, что целевой сервер веб-сайта обнаружил селен и отказался отправлять данные. Итак, как я могу очистить данные с веб-сайта с помощью селена и хромодрайвера на языке python. Я вполне Python новичок, заранее благодарю вас за вашу любезную помощь. Вот мой простой код:

from selenium import webdriver
my_driver_path = r"C:\python chrome driver\chromedriver.exe"
driver = webdriver.Chrome(executable_path=my_driver_path)
driver.get('http://www.nmpa.gov.cn/')

вот фотография проблемы: введите описание изображения здесь

1 Ответ

0 голосов
/ 01 июня 2020

Проблема здесь больше в HTML, чем в Python.

Если вы проверите исходный код страницы (вы можете сделать это, добавив print(driver.page_source), вы увидите, что он содержит метатег с атрибутом http-equiv, установленным на «refre sh»:

<HTML><HEAD><title>NMPA</title></HEAD>
<body>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312"><meta http-equiv="refresh" content="0;URL=/WS04/CL2042/">
</HTML>

Этот тег направляет браузер на go по заданному URL (/WS04/CL2042/, в плохо отформатированный атрибут, который браузер, к счастью, может понять). Итак, вместо очистки http://www.nmpa.gov.cn/, вы должны очистить http://www.nmpa.gov.cn/WS04/CL2042/.

Если вы измените свой код для доступа к этой другой ссылке, вы увидите, что тогда вы можете получить всю страницу. Вы можете либо жестко запрограммировать новую ссылку, либо безопасно объединить первую ссылку с «refre sh» место назначения с помощью такого метода, как urllib.parse.join(): https://docs.python.org/3.7/library/urllib.parse.html#urllib .parse.urljoin .

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