我已经尝试了几天的请求和bs4模块。我想制作一个类似于Google的“我很幸运”的简单程序。
这是我的代码:
import requests, bs4, webbrowser
source=requests.get('https://www.google.com/search?q=facebook').text
exsoup=bs4.BeautifulSoup(source, 'lxml')
# <cite class="iUh30">https://www.facebook.com/</cite>
match=exsoup.find('cite', class_='iUh30')
print(match.text)
但是当我运行它时,出现以下错误:
print(match.text)
AttributeError: 'NoneType' object has no attribute 'text'
我该如何做?
答案 0 :(得分:1)
尝试迭代类似这样的内容,但不包括class_
属性:
match=exsoup.find_all('cite')
for i in match:
if 'http' in i.text:
print(i.text)
答案 1 :(得分:0)
问题似乎是,与使用请求库进行访问时相比,使用浏览器访问该网站的结果有所不同。您可以尝试指定标题(我从以下示例中选取了这个示例:https://stackoverflow.com/a/27652558/9742036)
headers = {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.95 Safari/537.36'}
source = requests.get('https://www.google.com/search?q=facebook', headers=headers).text
,源代码看起来更像是您对浏览器的访问。
否则,您的代码可以正常工作。在原始匹配中您没有获得任何结果,因此应该编写代码来处理这种情况(例如,在其他答案中使用迭代器建议。)