如果您打印响应内容(即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