首页 > 解决方案 > 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'

为什么不选择数字作为文本?
我应该怎么做?

标签: python-3.xbeautifulsoup

解决方案


您的第一次尝试几乎是正确的!

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)

推荐阅读