当我搜索“时,我试图抓取谷歌结果”什么是2+2",但返回以下代码'NoneType' object has no attribute 'text'
。请帮助我实现所需的目标。
text="What is 2+2"
search=text.replace(" ","+")
link="https://www.google.com/search?q="+search
headers={'User-Agent':'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36'}
source=requests.get(link,headers=headers).text
soup=BeautifulSoup(source,"html.parser")
answer=soup.find('span',id="cwos")
self.respond(answer.text)
唯一的问题是id
in soup.find
,但是我非常仔细地选择了这个 id。我应该不会弄错的。我也尝试过answer=soup.find('span',class_="cwcot gsrt")
,但都不起作用。
解析网站时的一个大问题是,与浏览器中的源代码相比,源代码可能看起来非常不同requests
看到了。不同之处在于 JavaScript,它可以在支持 JavaScript 的浏览器中极大地修改 DOM。
我建议3个选择:
- use
requests
获取页面,然后仔细检查它 - 当页面由非 js 启用的代理检索时,该标记是否存在?
- use https://www.seleniumhq.org/作为您的代理 - 它本质上是一个功能齐全的浏览器,您可以通过编程方式控制它,包括 w/python。
- 使用 google 的搜索 API 而不是尝试抓取 html
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)