[英]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.