BeautifulSoup找不到标签li
问题描述:
import re
from bs4 import BeautifulSoup
>>>html_text = '<li>Location:<a href="tweetLocation">tweetLocation</a></li>'
>>>soup = BeautifulSoup(html_text)
>>>print soup.find('li', text=re.compile(r'^Location.*'))
我得到的答案为none。 谁能告诉我如何找到?BeautifulSoup找不到标签li
答
text
参数(现在命名为string
)实际上检查以匹配期望的标准的元件的.string
- 在这种情况下,正则表达式^Location.*
。现在
,有什么特别的.string
属性 - 它的价值将是None
如果一个标签有多个孩子:
如果一个标签包含一个以上的事情,那么目前还不清楚是什么 .string应参照,所以.string被定义为无
而且,你li
元素实际上已经多个孩子 - 一个文本节点Location:
和a
元素。因此,没有结果。
相反,找到的文本元素,然后获得所需的元素:
In [1]: import re
In [2]: from bs4 import BeautifulSoup
In [3]: html_text = '<li>Location:<a href="tweetLocation">tweetLocation</a></li>'
In [4]: soup = BeautifulSoup(html_text, "html.parser")
In [5]: soup.find(text=re.compile(r'^Location.*')).find_parent('li')
Out[5]: <li>Location:<a href="tweetLocation">tweetLocation</a></li>
In [6]: soup.find(text=re.compile(r'^Location.*')).next_sibling.get_text()
Out[6]: 'tweetLocation'
的可能的复制[BeautifulSoup - 通过文本标签内搜索(https://*.com/questions/31958637/ beautifulsoup搜索按文本内,一个标签) –