【问题标题】: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'