这是一个复制我遇到的问题的例子:
from bs4 import BeautifulSoup
import re
soup = BeautifulSoup('<root><td><label for="pol_nbr">Policy number<br></label></td></root>', 'html.parser')
anchor = soup.find('label', text=re.compile('Policy number'))
但是anchor
没有。为什么它不是label
标签?
答案 0 :(得分:1)
问题是<br>
标记,如果删除它,代码可以正常运行:
In [39]: soup = BeautifulSoup('<root><td><label for="pol_nbr">Policy number</label></td></root>', 'html.parser')
In [40]: soup.find('label', text=re.compile('Policy number'))
Out[40]: <label for="pol_nbr">Policy number</label>
更可靠的方法是使用for属性值进行选择:
soup.select_one("root label[for=pol_nbr]")