从 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&lt;sub&gt;2&lt;/sub&gt;O and CO&lt;sub&gt;2&lt;/sub&gt;'?

【问题讨论】:

【参考方案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

如何从 BeautifulSoup4 中的 html 标签中找到特定的数据属性?

在 BeautifulSoup 抓取之后从 Python 中的列表中提取数据,并创建 Pandas 表