示例HTML
<div class="SomeClass" style="">some text<\div>
要查找此特定标记,我已尝试
text = article.find('div', attrs={'style':""})
但它会找到所有具有此属性的标记,无论是否为空。 如何指定标记“div”必须具有空的“样式”属性?
(更新)找到一个解决方案,但看起来有点难看
text_area = article.find_all('div', attrs={'style':''})
text = []
for i in text_area:
if 'style=""' in str(i):
text.append(i.text)
还有另一种让它看起来更好的方法吗?
答案 0 :(得分:0)
>>> html = '<div class="SomeClass" style="some_styel">some text<\div><div class="SomeClass" style="">some text<\div>'
>>> bs = BS(html, 'html.parser')
>>> divs = bs.find_all('div', {'style': ''})
>>> for div in divs:
... div['style']
''
答案 1 :(得分:0)
这与基于HTML的默认解析器有关,其中每个元素都具有隐式style=''
属性。如果您改为指定XML解析器(如lxml-xml
),它可以工作,但是您可能无法解析HTML文档
>>> html = '<div class="SomeClass" style="">blank<\div><div class="SomeClass" style="test">test<\div><div class="SomeClass">none<\div>'
>>> article = BeautifulSoup(html, 'lxml-xml')
>>> article.find_all('div', style='')
[<div class="SomeClass" style="">blank</div>]
答案 2 :(得分:0)
我是这样做的
matched_rctype = None
rctypes = form.find_all("option", {'selected':''})
for rctype in rctypes:
try:
rctype['selected']
matched_rctype = rctype.contents[0]
except KeyError:
continue