使用 Python 从 HTML 文件中提取文本

2023-11-23

我想使用 Python 从 HTML 文件中提取文本。如果我从浏览器复制文本并将其粘贴到记事本中,我想要的输出基本上与我得到的输出相同。

我想要比使用正则表达式更强大的东西,因为正则表达式可能会在格式不良的 HTML 上失败。我看到很多人推荐 Beautiful Soup,但我在使用它时遇到了一些问题。其一,它拾取了不需要的文本,例如 JavaScript 源代码。而且,它不解释 HTML 实体。例如,我期望' HTML 源中的撇号将转换为文本中的撇号,就像我将浏览器内容粘贴到记事本中一样。

Update html2text看起来很有希望。它正确处理 HTML 实体并忽略 JavaScript。然而,它并不完全产生纯文本;它会生成 Markdown,然后必须将其转换为纯文本。它没有附带示例或文档,但代码看起来很干净。


相关问题:

  • 过滤掉 HTML 标签并解析 python 中的实体
  • 在 Python 中将 XML/HTML 实体转换为 Unicode 字符串

我发现的最好的一段代码,可以在不获取 javascript 或不需要的东西的情况下提取文本:

from urllib.request import urlopen
from bs4 import BeautifulSoup

url = "http://news.bbc.co.uk/2/hi/health/2284783.stm"
html = urlopen(url).read()
soup = BeautifulSoup(html, features="html.parser")

# kill all script and style elements
for script in soup(["script", "style"]):
    script.extract()    # rip it out

# get text
text = soup.get_text()

# break into lines and remove leading and trailing space on each
lines = (line.strip() for line in text.splitlines())
# break multi-headlines into a line each
chunks = (phrase.strip() for line in lines for phrase in line.split("  "))
# drop blank lines
text = '\n'.join(chunk for chunk in chunks if chunk)

print(text)

你只需要先安装 BeautifulSoup :

pip install beautifulsoup4
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Python 从 HTML 文件中提取文本 的相关文章

随机推荐

  • JavaScript 函数导入不起作用

    我正在尝试从单独的 js 文件导入函数 当我声明导入命令时 页面不执行代码 但是 当我删除导入命令并执行一个简单的警报 Hello 时 页面上会弹出该内容 项目结构 Todo 应用程序 js 两个 js main js index html
  • 有没有办法在 Javascript 中获取所有事件侦听器绑定?

    我正在寻找一种我可以的方法列出所有事件侦听器绑定是在网站上用 JS 或其他脚本 制作的 主要是我想找出双重绑定 出于调试原因 但我想它还有其他问题 杰出的将是浏览器的插件 您可以在网站上看到哪些元素具有哪些类型eventlisteners边
  • 使用 data.table 进行内存分析

    在包含调用的 R 代码中分析内存的正确方法是什么data table功能 假设我想确定表达式期间的最大内存使用量 该参考文献表明Rprofmem可能不是正确的选择 https cran r project org web packages
  • 组合向量和 data.frame 匹配列值和向量值

    I have vetor lt c 1 2 3 data lt data frame id c a b a c a 我需要一个将每个向量值与特定 id 相匹配的 data frame 输出 结果 id vector1 1 a 1 2 b 2
  • CGRect 和 CGPath 的交集

    有没有一种有效的方法来检测 CGPath 和 CGRect 是否相交 我考虑过循环遍历 CGRect 内的每个点 如下所示 for CGPoint point in rect if CGPathContainsPoint path nil
  • C# 5 的“即发即忘”中的异常处理(在 .net 4.5 中)

    考虑以下 一劳永逸 用例 调用者从我的方法请求一些数据 我的方法检查缓存以查看数据是否已经存在 如果不是 它会从源中获取并缓存它 调用者在获取结果之前不需要等待缓存发生 并且如果缓存失败 该方法不应阻止调用者获取结果 我今天所拥有的 看起来
  • 为什么我的 Python 代码为列表中的所有元素提取相同的数据?

    My project consists of making a competitive watch table for hotel rates for an agency It is a painful action that I want
  • 如何查找给定列是否存在唯一键约束

    我正在编写一个 perl 脚本 我需要在其中运行更新查询 但我需要检查 update sql 命令是否不违反唯一键约束 所以如果我有一张桌子tb C1 C2 C3 我的更新查询如下 update tb set C1 b1 where C2
  • 如何在HTML中正确引用本地资源?

    事实证明 引用本地资源可能是一些人的摩擦点 我正在寻找本地资源引用的规范答案及其含义 拿这些例子来说 这些参考路径有什么区别呢 img src myfile png 没有前导斜杠 img src myfile png 带有前导斜杠 img
  • 为什么 n+++n 有效而 n++++n 无效?

    在Java中 表达式 n n 似乎评估相当于 n n 尽管事实上 n是一个有效的一元运算符 其优先级高于算术运算符 运算符在n n 因此编译器似乎假设该运算符不能是一元运算符并解析该表达式 然而 表达式 n n 无法编译 即使有一个有效的可
  • Facebook在iOS6.0中使用SLRequest上传照片无论如何失败

    这是我的 Objc 代码 ACAccountStore facebookaccount ACAccountStore alloc init ACAccountType facebookaccountType facebookaccount
  • 电子邮件附件

    我希望能够附加我生成的文件 即时 我不想将文件保存在我的服务器上 并通过电子邮件发送出去 我已完成所有文本 但不知道如何使用 sendmail 将文件附加到电子邮件 谢谢 See http railscasts com episodes 2
  • Android: onPause() 是否保证在 finish() 之后调用?

    在任何地方都找不到对此问题的可靠答案 我有一个方法 其中调用 finish 然后调用 onPause onPause 是否保证在调用 finish 后被调用 Android一般会调用onPause 如果你打电话finish 在您的 Acti
  • SSL:使用 Python3 的 CERTIFICATE_VERIFY_FAILED

    如果这是一个愚蠢的问题 我深表歉意 但我一直在尝试自学如何使用 BeautifulSoup 以便我可以创建一些项目 我按照此链接作为教程 https www youtube com watch v 5GzVNi0oTxQ 在遵循与他完全相同
  • Android 进程内存使用与电池消耗之间的相关性

    我终于找到了一种获取各个进程的 TotalPss 的方法 现在我关心的是 如何找到每个android进程的电池消耗 如果没有直接的方法找到它 每个进程的内存使用量和电池消耗之间是否有任何相关性 我可以为此研究任何研究论文吗 是的 内存使用量
  • VBScript 内存不足错误

    我有一个由第三方公司构建的经典 ASP CRM 目前 我可以访问源代码并能够进行所需的任何更改 一天中 通常是在用户长时间使用之后 我的大多数页面都会随机出现内存不足错误 应用程序的构建方式是所有页面和脚本都从 Global asp 文件中
  • 为什么服务器重置 TCP 后用户代理会重新提交请求?

    我们最近注意到一个问题 即某些用户代理会重复相同的 POST 请求 而用户实际上并没有实际触发它两次 经过进一步研究 我们注意到只有当请求通过负载均衡器并且服务器花了很长时间来处理请求时才会发生这种情况 数据包捕获会话最终显示负载均衡器在
  • 是否有针对受最大宽度或最大高度约束的 IMG 的 CSS 选择器?

    如果我定义以下 CSS 规则 img max width 200px max height 200px border 1px solid black 是否有一种纯 CSS 方法来检测那些在没有尺寸限制的情况下会更大的图像对象 语义上匹配的东
  • 是否可以使用结构化绑定来分配类成员?

    我想使用 C 17 结构化绑定为类成员变量赋值 如下所示 include
  • 使用 Python 从 HTML 文件中提取文本

    我想使用 Python 从 HTML 文件中提取文本 如果我从浏览器复制文本并将其粘贴到记事本中 我想要的输出基本上与我得到的输出相同 我想要比使用正则表达式更强大的东西 因为正则表达式可能会在格式不良的 HTML 上失败 我看到很多人推荐