【问题标题】:BeautifulSoup Cannot Find Tag liBeautifulSoup 找不到标签 li
【发布时间】:2017-11-22 22:42:26
【问题描述】:
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.*'))

我没有得到答案。 谁能告诉我如何找到它?

【问题讨论】:

标签: python html css beautifulsoup html-lists


【解决方案1】:

text 参数(现在已重命名为 string)实际上检查元素的 .string 以匹配所需条件 - 在本例中为正则表达式 ^Location.*。

现在,.string 属性有一些特别之处 - 如果标签有多个子标签,它的值将是 None:

如果一个标签包含多个东西,那么不清楚是什么 .string 应该引用,所以 .string 被定义为 None

而且,您的 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'

【讨论】:

    猜你喜欢
    • 2020-06-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多