簡體   English   中英

用什么漂亮的湯 findall 正則表達式字符串?

[英]What beautiful soup findall regex string to use?

我在表單的 HTML 中有鏈接

<a href="/downloadsServlet?docid=abc" target="_blank">Report 1</a>
<a href="/downloadsServlet?docid=ixyz" target="_blank">Fetch Report 2 </a>

我可以使用 BeautifulSoup 獲取上述表單的鏈接列表

我的代碼如下

from bs4 import BeautifulSoup
html_page = urllib2.urlopen(url)
soup = BeautifulSoup(html_page)
listOfLinks = list(soup.findall('a'))

但是,我想在引用鏈接的文本中找到包含“Fetch”一詞的鏈接。

我試過表格

soup.findAll('a', re.compile(".*Fetch.*"))

但這行不通。 如何僅選擇具有 href 且文本部分中包含“Fetch”一詞的標簽 a?

正則表達式在這里可能有點矯枉過正,但它允許可能的擴展:

def criterion(tag):
  return tag.has_attr('href') and re.search('Fetch', tag.text)

soup.findAll(criterion)
# [<a href="/downloadsServlet?docid=ixyz" target="_blank">Fetch Report 2 </a>]
import re
soup.findAll('a', text = re.compile("Fetch"))

您可以使用正則表達式作為過濾器,它將使用re.search方法來過濾我們的標簽。

text/string是標簽的文本值, text = re.compile("Fetch")表示查找文本值包含'Fetch'的標簽

文檔

還有一件事,使用find_all()findAll()findall()不是 bs4 中的關鍵字

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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