请求后表Python3

2024-06-25 05:43:34 发布

您现在位置:Python中文网/ 问答频道 /正文

我正试图刮取一个https://www.domeinquarantaine.nl/表,但是由于某种原因,它没有给出表的响应

#The parameters
baseURL = "https://www.domeinquarantaine.nl/tabel.php"
PARAMS = {"qdate": "2019-04-21", "pagina": "2", "order": "karakter"}
DATA = {"qdate=2019-04-21&pagina=3&order="}
HEADERS = {"Host": "www.domeinquarantaine.nl",
"User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:65.0) Gecko/20100101 Firefox/65.0",
"Accept": "*/*",
"Accept-Language": "en-US,en;q=0.5",
"Accept-Encoding": "gzip, deflate, br",
"Referer": "https://www.domeinquarantaine.nl/",
"Content-Type": "application/x-www-form-urlencoded; charset=UTF-8",
"X-Requested-With": "XMLHttpRequest",
"Content-Length": "41",
"Connection": "keep-alive",
"Cookie": "_ga=GA1.2.1612813080.1548179877; PHPSESSID=5694f8e2e4f0b10e53ec2b54310c02cb; _gid=GA1.2.1715527396.1555747200"}

#POST request
r = requests.post(baseURL, headers = HEADERS, data = PARAMS)

#Checking the response
r.text

答案由奇怪的记号和问号组成

所以我的问题是为什么它会回复这个回复?而如何修复它,最终以被刮掉的桌子收场呢?你知道吗


Tags: thehttpswwwnlorderparamscontenten
2条回答

打开web浏览器,关闭JavaScript,您将看到requests可以得到什么。你知道吗

但使用Chrome/Firefox中的DevTools(tab Network,filter XHR请求),您应该会看到POST请求到url https://www.domeinquarantaine.nl/tabel.php,它会用表返回HTML。你知道吗

如果您在浏览器中打开此url,则会看到表-因此您可以使用get获取它,但使用POST可能可以过滤数据。你知道吗


在写了这个解释之后,我看到你已经在代码中有了这个url-你在描述中没有提到它。你知道吗

你有不同的问题-你设定了

"Accept-Encoding": "gzip, deflate, br"

所以服务器发送压缩响应,您应该解压缩它。你知道吗

或使用

"Accept-Encoding": "deflate"

服务器将发送未压缩的数据,您将看到带有表格的HTML

因此,有几个原因可以解释为什么你会得到你所得到的:

  1. 你的头看起来不对
  2. 您发送的数据包含一些额外的变量
  3. 网站需要cookies才能显示表

通过更改dataheaders变量并将requests.session()添加到代码(它将自动收集和注入cookies)

总之,您的代码应该如下所示:

import requests

session = requests.session()
headers = {"User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:66.0) Gecko/20100101 Firefox/66.0", "Accept": "*/*", "Accept-Language": "en-US,en;q=0.5", "Accept-Encoding": "gzip, deflate", "Referer": "https://www.domeinquarantaine.nl/", "Content-Type": "application/x-www-form-urlencoded; charset=UTF-8", "X-Requested-With": "XMLHttpRequest", "DNT": "1", "Connection": "close"}
data={"qdate": "2019-04-20"}

session.get("https://www.domeinquarantaine.nl", headers=headers)
r = session.post("https://www.domeinquarantaine.nl/tabel.php", headers=headers, data=data)

r.text

希望这有帮助!你知道吗

相关问题 更多 >