beauthulsoup使用find_all(“span”,文本=重新编译(“T”))

2024-05-16 09:36:39 发布

您现在位置:Python中文网/ 问答频道 /正文

html文件可以从here下载

soup = BeautifulSoup(open(r"test.html"),from_encoding="ascii")
In [43]:soup.find_all("span")
Out[43]:
    [<span style="position:absolute; border: gray 1px solid; left:0px; top:50px; width:648px; height:783px;"></span>,
     <span style="font-family: LJOGFN+HelveticaNeueLTStd-Bd; font-size:7px">S
     <br/></span>,
     <span style="font-family: LJOGFN+HelveticaNeueLTStd-Bd; font-size:7px">T
     <br/></span>,
     <span style="font-family: LJOGFN+HelveticaNeueLTStd-Bd; font-size:8px">N
     <br/></span>,
     <span style="font-family: LJOGFN+HelveticaNeueLTStd-Bd; font-size:7px">E
     <br/></span>,
     <span style="font-family: LJOGFN+HelveticaNeueLTStd-Bd; font-size:7px">T
     <br/></span>,
     <span style="font-family: LJOGFN+HelveticaNeueLTStd-Bd; font-size:8px">N
     <br/></span>]

 In [44]:soup.find_all("span", text = re.compile("T"))
 Out[44]:[]

为什么它返回空列表?这和编码有关吗?在

更新:以下代码起作用:

^{pr2}$

这是怎么回事?在


Tags: inbrsizestylehtmlallfindout
1条回答
网友
1楼 · 发布于 2024-05-16 09:36:39

根据文档(http://www.crummy.com/software/BeautifulSoup/bs4/doc/#the-text-argument),您的代码应该可以工作。你应该提交一份错误报告。在

编辑:看起来这个问题是由<span>元素中的<br>标记引起的。这绝对是个虫子。在

要解决此问题,请使用lambda,这样就不需要定义函数:

soup.find_all(lambda tag: tag.name == "span" and re.match("T", tag.text))

相关问题 更多 >