从 BeautifulSoup 4.6 中的两个 HTML 标签之间提取 HTML
Posted
技术标签:
【中文标题】从 BeautifulSoup 4.6 中的两个 HTML 标签之间提取 HTML【英文标题】:Extract the HTML from between two HTML tags in BeautifulSoup 4.6 【发布时间】:2018-03-16 07:00:38 【问题描述】:我想用 bs4 获取两个标签之间的 html。有没有办法在 Beautiful Soup 中做 javascript 的 .innerHTML?
这段代码找到一个带有“title”类的span,并从中获取文本。
def get_title(soup):
title = soup.find('span', 'class': 'title')
return title.text.encode('utf-8')
此函数错误地返回不带下标的跨度文本。 'Title about H2O and CO2'
以下代码是title = soup.find('span', 'class': 'title')
的结果:
<span class="title">Title about H<sub>2</sub>O and CO<sub>2</sub></span>
没有原始跨度如何得到结果?
想要的结果:'Title about H<sub>2</sub>O and CO<sub>2</sub>'
?
【问题讨论】:
【参考方案1】:在发现 JavaScript 具有 .innerHTML 后,我能够在 google 上搜索到漂亮汤的方法。我在this question 中找到了答案。
选择带有BS4的元素后,可以使用.decode_contents(formmater='html')
获取innerHTML。
element.decode_contents(formatter="html")
【讨论】:
以上是关于从 BeautifulSoup 4.6 中的两个 HTML 标签之间提取 HTML的主要内容,如果未能解决你的问题,请参考以下文章
Python:告诉BeautifulSoup从两个中选择一个值
如何使用Python中的BeautifulSoup从HTML链接解析嵌套表?
使用 BeautifulSoup 从 `div` 中的 `p` 中提取文本
关于爬虫中常见的两个网页解析工具的分析 —— lxml / xpath 与 bs4 / BeautifulSoup