我有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'))
但是,我想在引用该链接的文本中找到带有“获取”一词的链接。
我尝试了表格
soup.findAll('a', re.compile(".*Fetch.*"))
但这不起作用。如何仅选择具有href且文本部分中包含“Fetch”一词的标签?
答案 0 :(得分:3)
正则表达式在这里可能有点过分,但它允许可能的扩展:
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>]
答案 1 :(得分:2)
import re
soup.findAll('a', text = re.compile("Fetch"))
您可以使用正则表达式作为过滤器,它将使用re.search
方法过滤我们的标记。
text/string
是代码的文字值,text = re.compile("Fetch")
表示查找文本值包含的标记&#39;获取&#39;
还有一件事,使用find_all()
或findAll()
,findall()
不是bs4中的关键词