簡體   English   中英

BeautifulSoup4通過文本正則表達式搜索標簽

[英]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,}'))

謝謝

杉木搜索元素,您可以使用lambdatag.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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM