当前位置: 首页 > 面试题库 >

使用Python将HTML渲染为纯文本

宋明亮
2023-03-14
问题内容

我正在尝试使用BeautifulSoup转换HTML文本块。这是一个例子:

<div>
    <p>
        Some text
        <span>more text</span>
        even more text
    </p>
    <ul>
        <li>list item</li>
        <li>yet another list item</li>
    </ul>
</div>
<p>Some other text</p>
<ul>
    <li>list item</li>
    <li>yet another list item</li>
</ul>

我尝试做类似的事情:

def parse_text(contents_string)
    Newlines = re.compile(r'[\r\n]\s+')
    bs = BeautifulSoup.BeautifulSoup(contents_string, convertEntities=BeautifulSoup.BeautifulSoup.HTML_ENTITIES)
    txt = bs.getText('\n')
    return Newlines.sub('\n', txt)

…但是那样我的span元素总是在换行符上。这当然是一个简单的例子。有没有一种方法可以在HTML页面中获取文本,就像在浏览器中呈现文本一样(不需要CSS规则,只需以常规方式显示div,span,li等元素即可)在Python中?


问题答案:

BeautifulSoup是一个抓取库,因此它可能不是进行HTML渲染的最佳选择。如果不是必须使用BeautifulSoup,则应查看html2text。例如:

import html2text
html = open("foobar.html").read()
print html2text.html2text(html)

输出:

一些文字更多文字甚至更多文字

  * 项目清单
  *另一个清单项目

其他一些文字

  * 项目清单
  *另一个清单项目


 类似资料:
  • 问题内容: 有没有一种方法可以将html渲染为PNG图片?我知道画布是可能的,但我想呈现例如div之类的标准html元素。 问题答案: 我知道这是一个很老的问题,已经有了很多答案,但是我仍然花了几个小时来尝试做自己想做的事情: 给定一个html文件,从命令行生成具有 透明 背景的(png)图像 使用无头的Chrome(此响应的版本为74.0.3729.157),实际上很容易: 命令说明: 您可以从

  • 问题内容: 有没有一种方法可以将html渲染为PNG图片?我知道画布是可能的,但我想呈现例如div之类的标准html元素。 问题答案: 我知道这是一个很老的问题,已经有了很多答案,但是我仍然花了几个小时来尝试做自己想做的事情: 给定一个html文件,从命令行生成具有 透明 背景的(png)图像 使用无头的Chrome(此响应的版本为74.0.3729.157),实际上很容易: 命令说明: 您可以从

  • 问题内容: 那么这是用reactjs渲染原始html的唯一方法吗? 我知道有一些很酷的方法来用JSX标记内容,但是我主要对能够呈现原始html(具有所有类,内联样式等)感兴趣。像这样复杂的东西: 我不想在JSX中重写所有内容。 也许我在想这一切错。请纠正我。 问题答案: 您可以利用npm模块。 注意:我是该模块的作者,几小时前刚刚发布了该模块。请随时报告任何错误或可用性问题。

  • 问题内容: 对于我的django网站,我正在寻找一种将动态html页面转换为pdf的简单解决方案。 页面包含HTML和来自Google可视化API的图表(该图表基于javascript,但必须包含这些图表)。 问题答案: 尝试从Reportlab解决方案。 下载并像往常一样使用python setup.py install安装 你还需要安装以下模块:具有easy_install的xhtml2pdf

  • 问题内容: 我有一系列使用Beautiful Soup解析为单个文本文件的HTML文件。HTML文件的格式设置为使其输出始终为文本文件中的三行,因此输出将类似于: 但这很容易 换句话说,HTML文件的内容在每个文件中并不是真正的标准,但是它们始终会产生三行。 因此,我想知道如果我想从Beautiful Soup生成的文本文件然后将其解析为带有以下内容的列的CSV文件(使用上面的示例),应该从哪里开

  • canvas元素并非Canvas中最强大的部分,真正的关键部分是2D渲染上下文,这是你真正绘制图形的地方。canvas元素的用途只是作为2D渲染上下文的包装器,它包含绘图和图形操作所需要的全部方法和丰富功能。理解这一点是很重要的,强调一下:绘图是在2D渲染上下文中进行的,而不是在canvas元素中进行。可以通过canvas元素访问和显示2D渲染上下文。 坐标系统 2D渲染上下文是一种基于屏幕的标准

  • 问题内容: 我正在做一个Maven项目,该项目使我可以解析网站中的html数据。我可以使用下面的代码来解析它: 到目前为止,我还没有问题。我可以解析html数据。我正在从jsoup中使用select方法,并使用“ div.col- section”检索数据,这意味着我正在使用class为col- section的div元素进行查找。我想在textarea中打印数据。即使网站上的实际数据超过一个段落

  • 问题内容: 我想使用Express 3 呈现原始页面,如下所示: 这是我配置服务器以呈现原始HTML页面的方式(此过时的问题启发了这一点): 不幸的是,使用此配置,页面将挂起并且永远无法正确呈现。我做错了什么?如何在没有精美的渲染引擎(如Jade和EJS)的情况下使用Express3渲染原始HTLM? 问题答案: 如果您实际上不需要将数据注入模板,则express中最简单的解决方案是使用静态文件服