发生了什么?
如果您打印响应内容(即
googleSoup.text),则会看到您得到的HTML完全不同。页面源和响应内容不匹配。
因为内容是动态加载的,所以 不会 发生这种情况。即便如此,页面源和响应内容也是相同的。(但是您在检查元素时看到的HTML是不同的。)
对此的基本解释是Google可以识别Python脚本并更改其响应。
解:
您可以传递 假的 User-
Agent,以使脚本看起来像真实的浏览器请求。
码:
headers = {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36'}r = requests.get('https://www.google.co.in/search?q=chocolate', headers=headers)soup = BeautifulSoup(r.text, 'lxml')elements = soup.select('.r a')print(elements[0]['href'])输出 :
https://en.wikipedia.org/wiki/Chocolate



