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

+0

的可能的复制[BeautifulSoup - 通过文本标签内搜索(https://*.com/questions/31958637/ beautifulsoup搜索按文本内,一个标签) –

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'