[英]BeautifulSoup4 search tag by text regex
我有這兩種情況,我想使用正則表達式按標簽的文本搜索標簽。
soup = BeautifulSoup("<B><A NAME="toc96446_13"></A>TEXT </B></P>", "html5lib")
soup.find('b', text=re.compile('TEXT'))
我認為這是行不通的,因為其中實際上包含我的TEXT的標簽。
另外,如何找到僅包含數字的標簽?
soup = BeautifulSoup("<p>169</p>", "html5lib")
soup.find('p', text=re.compile(r'[0-9]{1,}'))
謝謝
杉木搜索元素,您可以使用lambda
和tag.text
:
from bs4 import BeautifulSoup
import re
data = """
<B><A NAME="toc96446_13"></A>TEXT</B></P>
"""
soup = BeautifulSoup(data, 'html5lib')
print(soup.find(lambda t: t.name=='b' and re.search(r'TEXT', t.text)))
印刷品:
<b><a name="toc96446_13"></a>TEXT</b>
對於僅數字,可以利用regexp
^
和$
常量(請注意,這將僅匹配第一個<p>
標記(內部為169
,而不是第二個內部為ab1234
):
soup = BeautifulSoup("<p>169</p><p>ab1234</p>", 'html5lib')
print(soup.find('p', text=re.compile(r'^\d+$')))
印刷品:
<p>169</p>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.