[英]BeautifulSoup cannot find a HTML tag that contains certain text
我只想使用正則表達式來檢索HTML字符串中所有帶有“ //”的元素,而我遵循以下問題的答案: 使用BeautifulSoup查找包含某些文本的HTML標簽
然后我編寫一個類似的代碼:
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
但是我什么也沒收到。 我不知道為什么他們的測試用例可以工作,但是我不知道,是否有任何錯誤,或者我錯過了腳本中的某些內容?
屬性設置錯誤
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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.