python - beautifulsoupobject.findAll() 返回一个空列表
问题描述
def ebay_scrape(urls):
prices = []
namets = []
urlg = []
for url in urls:
try:
res = requests.get(url)
res.raise_for_status()
soup = BeautifulSoup(res.text, 'html.parser')
except (InvalidSchema, MissingSchema,):
pass
else:
try:
price = soup.findAll (class_= "price").getText()
prices.append(price)
urlg.append(url)
except (AttributeError):
pass
return urlg
urllist = (ebay_scrape(make_urls(names)))
我想从拍卖网站上的查询中提取所有价格。当我执行 price = soup.find() 时,此脚本运行良好,但当我尝试 soup.findAll 时,它返回一个空列表。我确定我只是犯了一些愚蠢的错误,但任何反馈都将不胜感激!
解决方案
我查看了该拍卖网站其中一个页面的 HTML,并且没有完全具有“价格”类属性的元素。
此外,您不能调用.getText()
结果findAll()
。
您可以使用正则表达式来查找包含单词 price 的任何内容:
import re
div_elements = soup.find_all('div',attrs={'class':re.compile('price')})
这样一页就有 252 个结果。
然后您可以通过以下方式收集价格:
prices = []
for div_element in div_elements:
prices.append(div_element.text)
结果(你必须清理一下):
In [191]: prices
Out[191]:
['$49.34',
'$92.00 | 46% off',
# ...
推荐阅读
- python - 迭代索引子集效率
- linux - 第一个 Bash 文件中的错误
- python - (pyqt5) 如何设置 QPrinter.setMargins(self, QPagedPaintDevice.Margins) 的值?
- linux - .Net Core 2.2 验证 jwt 失败,容器上出现 401
- jenkins - 詹金斯管道外壳+管道奇怪的行为
- tensorflow - 我是否需要修改我的 keras 代码才能在 gpu 上高效运行?
- uipath - 如何查找 UiPath Orchestrator 许可证类型和有关机器人并行运行限制的信息?
- user-interface - Flutter如何从子小部件更改父BottomNavigationBar索引
- cakephp - MVC:一种模型,多种应用
- foreign-keys - 如何在 Sybase 数据库中创建外键?