无法获取页面python的html

问题描述

所以过去 3 天我一直在尝试解决这个问题,但不知道为什么。 我正在尝试访问需要先登录的此站点的 html。

我尽我所能,但都以同样的问题返回。

这是我尝试过的:

response = requests.get('https://de-legalization.tlscontact.com/eg/CAI/myapp.PHP',headers=headers,params=params,cookies=cookies)
print(response.content)
payload = {
    '_token': 'TOKEN HERE','email': 'EMAIL HERE','pwd': 'PASSWORDHERE','client_token': 'CLIENT_TOKEN HERE'
}

with requests.session() as s:
    r = s.post(login_url,data=payload)
    print(r.text)

我也尝试过使用 URLLIB,但它们都返回:

<script>window.location="https://de-legalization.tlscontact.com/eg/CAI/index.PHP";</script>

任何人都知道为什么会发生这种情况。 这里也是我想要的 html 页面的 url: https://de-legalization.tlscontact.com/eg/CAI/myapp.php

解决方法

您看到此特定输出是因为它实际上是您正在下载的页面的内容。

您可以通过打开以下网址在 chrome 中进行测试:

view-source:https://de-legalization.tlscontact.com/eg/CAI/myapp.php

这是在 Chrome 中的样子:

enter image description here

发生这种情况是因为您被页面上的 javascript 代码重定向。

由于您尝试访问的页面需要登录,因此您无法仅通过向内部页面发送http请求来访问它。

您要么需要提取所有 cookie 并将它们添加到 python 脚本中。 或者您需要使用像 Selenium 这样的工具,它允许您通过 Python 代码控制浏览器。

您可以在此处找到如何从浏览器会话中提取所有 cookie:

How to copy cookies in Google Chrome?

您可以在这里找到如何在 Python 中向 http 请求添加 cookie:

import requests

cookies = {'enwiki_session': '17ab96bd8ffbe8ca58a78657a918558'}

r = requests.post('http://wikipedia.org',cookies=cookies)