Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/345.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
请求后表Python3_Python_Post_Python Requests - Fatal编程技术网

请求后表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
回答由奇怪的标记和问号组成


所以我的问题是为什么它会回复这个回复?如何修复它,最终得到一张被刮掉的桌子?

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

  • 你的标题看起来不正确
  • 您发送的数据包含一些额外的变量
  • 网站需要cookies才能显示表格
  • 通过更改
    数据
    标题
    变量并将
    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
    (tab
    Network
    ,filter
    XHR
    请求),您应该可以看到对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,您应该可以看到将请求发布到url
    https://www.domeinquarantaine.nl/tabel.php
    并将HTML与表格一起发回。您为什么说需要cookies才能查看表格?该表在@furas answer中显示得很好,其中没有包含会话。@glhr我尝试从代码中删除cookie,但似乎不起作用:)如果您使用OP的代码,只需将
    “接受编码”
    (在标题中)更改为
    “泄气”
    “utf-8”
    ,则效果良好。