请求后表Python3
我试图刮一张桌子,但是,出于某种原因,它没有给出桌子的响应请求后表Python3,python,post,python-requests,Python,Post,Python Requests,我试图刮一张桌子,但是,出于某种原因,它没有给出桌子的响应 #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.dome
#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
回答由奇怪的标记和问号组成
所以我的问题是为什么它会回复这个回复?如何修复它,最终得到一张被刮掉的桌子?因此,有几个原因可以解释为什么你会得到你想要的东西:
数据
和标题
变量并将requests.session()
添加到代码中(将自动收集和注入cookie),可以轻松解决此问题
总之,您的代码应该如下所示:
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
希望这有帮助 打开web浏览器,关闭JavaScript,您将看到
请求
可以得到什么
但使用Chrome/Firefox中的DevTools
(tabNetwork
,filterXHR
请求),您应该可以看到对url的POST请求,它将HTML与表一起发送回
若你们在浏览器中打开这个url,那个么你们会看到这个表——所以你们可以用get获取它的事件,但用POST你们可能可以过滤数据
在写了这个解释之后,我看到你已经在代码中有了这个url——你在描述中没有提到它 你有不同的问题-你设置了
"Accept-Encoding": "gzip, deflate, br"
所以服务器发送压缩响应,您应该解压缩它
或使用
"Accept-Encoding": "deflate"
服务器将发送未压缩的数据,您将看到带有表格的HTML若页面使用JavaScript添加数据,那个么您无法通过请求获取数据。它不能运行JavaScript。您可以使用Selenium控制web浏览器,该浏览器将加载页面并运行JavaScript。或者您必须检查从页面到服务器的所有请求,以找到JavaScript用于获取数据的ulr。打开web浏览器,关闭JavaScript,您将看到
请求
可以得到什么。使用Chrome/Firefox中的DevTools,您应该可以看到将请求发布到urlhttps://www.domeinquarantaine.nl/tabel.php
并将HTML与表格一起发回。您为什么说需要cookies才能查看表格?该表在@furas answer中显示得很好,其中没有包含会话。@glhr我尝试从代码中删除cookie,但似乎不起作用:)如果您使用OP的代码,只需将“接受编码”
(在标题中)更改为“泄气”
或“utf-8”
,则效果良好。