【发布时间】:2020-07-11 12:14:18
【问题描述】:
我正在构建一个 webscraper,它返回写在网站上的咖啡馆名称,如下所示:<h2 class="venue-title" itemprop="name">Prior</h2> 但是它返回了这个错误:
“ResultSet 对象没有属性 '%s'。您可能将元素列表视为单个元素。当您打算调用 find() 时是否调用了 find_all()?” % 钥匙 AttributeError:ResultSet 对象没有属性“文本”。您可能将元素列表视为单个元素。当您打算调用 find() 时,您是否调用了 find_all()? [0.699s完成]
代码如下:
from bs4 import BeautifulSoup
import requests
url = 'https://www.broadsheet.com.au/melbourne/guides/best-cafes-thornbury'
response = requests.get(url, timeout=5)
soup_cafe_list = BeautifulSoup(response.content, "html.parser")
type(soup_cafe_list)
cafes = soup_cafe_list.findAll('h2', attrs_={"class":"venue-title"}).text
print(cafes)
我已经尝试了很多方法来解决这个问题。我觉得它与 findAll 参数有关:cafes = soup_cafe_list.findAll('h2', attrs_={"class":"venue-title"}).text 因为当我以cafes = soup_cafe_list.findAll('h2', class_="venue-title") 运行它时,它的工作期望不会返回我认为.text 应该做的从其html 中清除的项目?
我在回溯中注意到的另一件事是它可能指的是 BS4 的不同目录?这与它有什么关系吗?我开始使用 Jupyter,现在在 Atom 上,但可能错误地安装了 bs4:
文件“/Users/[xxxxxxxx]/Desktop/Coding/amvpscraper/webscraper.py”,第 10 行,在 cafes = soup_cafe_list.findAll('h2', attrs_={"class":"venue-title"}).text getattr
中的文件“/Users/[xxxxxxxx]/opt/anaconda3/lib/python3.7/site-packages/bs4/element.py”,第 2081 行
不确定我是否做错了什么......
【问题讨论】:
标签: python web-scraping beautifulsoup