下面的代码应该从谷歌的搜索结果页面检索链接。
不使用 header 'linkedElems'
有 0 个元素,但是当我使用 header 时 'linkedElems'
有 44 个元素,这意味着使用 header “select('.r”后a')"在页面中找到 44 个元素。使用 header 时页面的 HTML
代码是否会发生变化?
我使用 Firefox 的开发工具检查了页面的 HTML
代码来查找链接并选择它们,因此“select('.r a') 不应返回 0。
代码:
import requests,bs4
print("Search something in google:")
searchKeyword = input()
print("Googling.... " + searchKeyword)
head = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:71.0) Gecko/20100101 Firefox/71.0'}
responseObj = requests.get("https://www.google.com/search?q="+searchKeyword, headers = head)
responseObj.raise_for_status()
print("Status code: " + str(responseObj.status_code))
soupObj = bs4.BeautifulSoup(responseObj.text, features='html.parser')
linkedElems = soupObj.select('.r a')
print(len(linkedElems))
结果(带标题):
Search something in google:
test
Googling.... test
Status code: 200
44
Process finished with exit code 0
结果(无标题):
Search something in google:
test
Googling.... test
Status code: 200
0
Process finished with exit code 0
最佳答案
User-Agent
header专门设计用于服务器了解发出请求的客户端的浏览器/操作系统/硬件,以便它可以构建对该特定客户端的正确响应:
The User-Agent request header is a characteristic string that lets servers and network peers identify the application, operating system, vendor, and/or version of the requesting user agent.
如果 Google 的服务器旨在为特定客户端返回特定的 HTML(剧透警告,确实如此),那么答案是“是的,HTML将会因 User-Agent 的不同值而不同“,正如您自己发现的那样。
关于python - 在 requests.get() 方法的参数中使用 'headers' 是否会更改 HTML 代码或以某种方式影响它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59530720/