我只想使用正则表达式来检索所有包含" //"的元素。在我的HTML字符串中,我按照这个问题的答案:Using BeautifulSoup to find a HTML tag that contains certain text
然后我编写了类似的代码:
from BeautifulSoup import BeautifulSoup
import re
html_text = \
"""
<html>
<!--<![endif]-->
<head>
<link rel="stylesheet" href="//abc.com/xyz" />
<meta rel="stylesheet" href="//foo.com/bar" />
</head>
</html>
"""
soup = BeautifulSoup(html_text)
for elem in soup(text=re.compile(r'//')):
print elem
我希望我的结果如下:
//abc.com/xyz
//foo.com/bar
但我一无所获。我不知道为什么他们的测试用例可行,但是我的,是否有任何错误或我错过了我的脚本?
答案 0 :(得分:2)
设置了错误的属性
soup = BeautifulSoup(html_text, 'lxml')
for elem in soup(href=re.compile(r'//')):
print elem.get('href')
在评论中提取问题的方法,你需要在找到哪个标签包含数据后解析数据。
def has_requires_chars(tag):
value_list = []
attrs_value = tag.attrs.values()
for avalue in attrs_value:
if type(avalue) is list:
value_list = value_list + avalue
else:
value_list.append(avalue)
for value in value_list:
if "//" in value:
return True
return False
soup = BeautifulSoup(html_text, 'lxml')
for elem in soup.find_all(has_requires_chars):
print elem