python-3.x - Beautifulsoup span 属性没有值,find 返回“None”我如何获取文本?
问题描述
html:
<h2 class="members-results" data-members-result="">
# <span data-members-count="">78430</span> results based on your <span>search options</span> </h2>
我需要价值78430
。
第一次尝试:
soup_page = BeautifulSoup(driver.page_source, 'lxml')
baitres = soup_page.find("span", attrs={'data-members-count'})
print(baitres)
输出:None
。
第二次尝试:
baitres = soup_page.find("span", attrs={'data-members-count'}).text
错误:AttributeError: 'NoneType' object has no attribute 'text'
。
为什么不选择数字作为文本?
我应该怎么做?
解决方案
您的第一次尝试几乎是正确的!
Attrs
是一本字典。代码缺少要匹配的值。通常你匹配字符串(或字符串空)。但是,如果您要做的只是匹配现有属性,则通过True
. 例如:baitres = soup_page.find("span", attrs={'data-members-count': True})
工作示例:
from bs4 import BeautifulSoup
html = '<h2 class="members-results" data-members-result=""><span data-members-count="">78430</span> results based on your <span>search options</span></h2>'
soup_page = BeautifulSoup(html, 'lxml')
baitres = soup_page.find("span", attrs={'data-members-count': True})
print(baitres.text)
推荐阅读
- graphql - 使用静态查询在 Gatsby 组件中格式化 Markdown HTML 数据
- single-spa - 单单spa子app本地开发
- java - 无论如何我可以检索所有具有相同名称但不同分数的电影的数据吗?
- php - laravel 7x 无法播种
- rest - 如何使用带有“立即运行”选项的 JasperServer rest api 安排作业生成报告
- java - 匹配 Rubik 蛇形的算法
- flutter - Flutter/Dart - 将逗号分隔的字符串拆分为 3 个变量?
- ajax - Proxy Server - Blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present (First request works, second request doesn't)
- unity3d - 为什么将模型从搅拌机导出到 Unity 时模型会损坏?
- angular7 - 将 Angular 7 更新到 8