Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/google-maps/4.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
Python Requests.get未返回完整的结果_Python_Python Requests - Fatal编程技术网

Python Requests.get未返回完整的结果

Python Requests.get未返回完整的结果,python,python-requests,Python,Python Requests,我正在尝试从Bing网站上获取披萨的结果,这是我的代码 import requests search = input("Search for:") Params = {"q": search} r = requests.get("http://www.bing.com/search", params=Params) f = open("test.html", "w+", encoding='utf-8') print(r.url) print(r

我正在尝试从Bing网站上获取披萨的结果,这是我的代码

import requests

    search = input("Search for:")
    Params = {"q": search}
    r = requests.get("http://www.bing.com/search", params=Params)
    f = open("test.html", "w+", encoding='utf-8')
    print(r.url)
    print(r.status_code)
    f.write(r.text)
它运行时没有任何错误

Search for:pizza
http://www.bing.com/search?q=pizza
200

Process finished with exit code 0
但是当我打开程序保存文本的文件时,我没有看到任何结果

下面是html文件的图片:

虽然问题中的注释是正确的,但在这种情况下不适用。对修改dom的JS加载事件的简单检查就是关闭javascript并在浏览器中重新加载页面。如果生成的内容与从请求中获得的内容相同,那么您知道在页面源和请求之后,内容将由dom事件填充,并且不会看到对内容所做的任何dom更改

然而,在这种情况下,如果我在浏览器中加载禁用JS的搜索url,我仍然会看到大量的结果。是的,缺少一些元素。但这并不能解释为什么在代码中根本看不到任何搜索结果

另外,要考虑的是,当我们将WebRebug作为HTTP头的一部分时,我们会发送一个用户代理字符串来标识我们是什么类型的HTTP客户端。现在,一些网站可能会过滤或阻止某些用户代理。或者只向真正的web浏览器提供结果。这似乎是你问题的根源

如果您更新代码并使用用户代理字符串(如web浏览器)设置http头,您应该会看到返回了大量结果和一个与您在浏览器中看到的内容完全匹配的html。减去broswer中通过基于JS的事件加载源代码后的所有元素

导入请求
搜索=输入(“搜索:”)
参数={“q”:搜索}
headers={'User-Agent':'Mozilla/5.0(Macintosh;Intel Mac OS X 10_10_1)AppleWebKit/537.36(KHTML,如Gecko)Chrome/39.0.2171.95 Safari/537.36'}
r=请求。获取(“http://www.bing.com/search,params=params,headers=headers)
f=open(“test.html”,“w+”,encoding='utf-8')
打印(r.url)
打印(r.状态\ U代码)
f、 书写(r.text)
现在,虽然这确实有效,并且会给你更多你想要的,但现在的问题是道德问题。Bing已选择不将结果返回到您的请求。获取呼叫。你当然可以撒谎,告诉bing你的请求不是来自请求,而是来自网络浏览器。或者你可以尊重他们的选择,他们不希望他们的服务像这样被访问

如果您对搜索结果特别感兴趣,必应确实提供了一个以JSON格式响应的搜索API,有些人已经编写了python模块来使用它


您保存的(以及beautifulsoup看到的)是服务器在您发出此请求时为您提供的基本html模板。通常,如果浏览器向该html资源发出请求,它会在浏览器中呈现该html模板,然后使用脚本用实际结果填充DOM。Beautifulsoup只查看html。@GarethMa Hey和gratz在500+上rep@ChrisDoylelmaO嘿:)从一个问题中获得+50+25次重复哈哈