如何使用Beautiful Soup和regex字符串查找html元素

时间:2016-09-24 00:05:59

标签: python html regex beautifulsoup

我试图使用python 3,漂亮的汤和正则表达式字符串在html文档中找到以下<li>元素。

<li style="text-indent:0pt; margin-top:0pt; margin-bottom:0pt;" value="394">KEANE J.
The plaintiff is a Sri Lankan national of Tamil ethnicity.  While he was a
passenger on a vessel travelling from India to
Australia, that vessel ("the
Indian vessel") was intercepted by an Australian border protection vessel ("the
Commonwealth ship")
in Australia's contiguous
zone<span class="sup"><b><a name="fnB313" href="http://www.austlii.edu.au/au/cases/cth/HCA/2015/1.html#fn313">[313]</a></b></span>. 
</li>

我尝试使用以下find_all函数,该函数返回一个空列表。

html.find_all('li', string='KEANE J.')

我还尝试使用regex的find函数,该函数返回一个无对象:

html.find('li', string=re.compile(r'^KEANE\sJ\.\s'))

如何在html文档中找到此元素?

1 个答案:

答案 0 :(得分:1)

  

它与存在的元素有关吗?

当然,在这种情况下,除了文本节点,li元素还有其他子元素。这在.string paragraph

中有记录
  

如果某个代码包含多个内容,则不清楚.string应引用的内容,因此.string定义为None

您可以做的是找到文本节点本身,然后获取其父级:

li = html.find(string=re.compile(r'^KEANE\sJ\.\s')).parent
print(li)