получить html с python запросом и перенаправлением - PullRequest
1 голос
/ 25 февраля 2020

Я собираюсь сканировать страницу url = 'https://e-justice.europa.eu/searchBris.do', чтобы представить свою собственную информацию. Я использовал request.get (url) для получения содержания html страницы.

requests.get(url)

но я получаю страницу перенаправления в качестве результата запроса следующим образом:

\n\n\n\n\n\n\n<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">\n<html lang="en">\n    <head>\n    <title>Find a company</title>\n    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">\n\n    <script> \n        top.location.reload();\n    </script>\n\n    <noscript><meta http-equiv="refresh" content="0;url=https://e-justice.europa.eu/searchBris.do"/></noscript>\n    </head>\n    <body>\n        <h1>Redirecting...</h1>\n    </body>\n</html>

Я также протестировал параметр allow_redirect, а также session.get () и session.post () решает следующим образом, но перенаправленный вывод остается и доступ к html URL запрещен.

requests.get(url, allow_redirects=True)
session.get(url, allow_redirects=True)
requests.post(url, allow_redirects=True)
session.post(url, allow_redirects=True)

Есть ли какое-либо решение для получения содержимого исходного URL?

Ответы [ 2 ]

1 голос
/ 25 февраля 2020

Я попробовал фантом js для захвата html этого сайта, и это успешно.

driver = webdriver.PhantomJS()
driver.get(url)
html = str(driver.page_source)
1 голос
/ 25 февраля 2020

Несмотря на то, что заявлено, на странице не используется традиционное перенаправление, как вы можете проверить:

url = 'https://e-justice.europa.eu/searchBris.do'
r = requests.get(url, headers={'User-Agent': 'Mozilla/5.0'})  # spoof UA just in case
r.is_redirect
> False

Что происходит в теге <noscript>. Сайт отображается с клиентской стороны Javascript, поэтому вы не можете использовать скребок HTML (без браузера).

Вы можете попробовать использовать браузер без головы с Selenium.

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