问题标签 [lxml]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
119 浏览

python - 有没有办法在 Python 中为 lxml 指定固定(或可变)数量的元素

必须有一种更简单的方法来做到这一点。我需要大量 html 文档中的一些文本。在我的测试中,找到它的最可靠方法是在 div 元素的 text_content 中查找特定单词。如果我想检查具有我的文本的元素上方的特定元素,我一直在枚举我的 div 元素列表并使用具有我的文本的元素的索引,然后通过对索引进行操作来指定前一个元素。但我相信一定有更好的方法。我似乎无法弄清楚。

如果不清楚

或者

0 投票
5 回答
17040 浏览

python - 安装 easy_install... 以安装 lxml

我已经认识到 ElementTree 不会做我想做的事情。我已经查看了 lxml 的文档,看来它可以满足我的目的。要获得 lxml,我需要获得 easy_install。所以我从这里下载了它,并把它放进去/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/。然后我去了那个文件夹,然后运行sh setuptools-0.6c11-py2.6.egg​​.

即安装成功。然后我很兴奋,因为我认为 easy_install 的全部意义在于我可以通过 easy_install lxml 进行安装,lxml 会神奇地被下载、构建和正确安装,为我的导入乐趣做好准备。于是我跑了easy_install lxml。我在下面粘贴了结果。我该怎么办?

0 投票
1 回答
934 浏览

xpath - Lxml 或 Xpath 内容打印

我有以下功能

我想看看的内容post。我已经尝试了我能想到的一切。

如何正确调试内容?这是一个电影网站,我在其中翻录链接和标题,这个函数应该解析标题。

我确定 H@ 不存在,我该如何打印/调试它?

0 投票
2 回答
293 浏览

python - 有没有比 lxml 更好的方法来解析 html 表

我正在使用 html 文档并撕下表格以解析它们,如果它们被证明是正确的表格。我对结果感到满意——我的提取过程在超过 95% 的情况下成功地映射了行标签和列标题,在没有成功的情况下,我们可以识别问题并使用其他方法。

在我对 iternet 的扫描中,我了解到浏览器具有非常强大的“引擎”,即使底层的 htm 格式错误,也可以正确显示 htm 页面的内容。我们在解析表时遇到的问题与无法将标题与数据行分开,或者无法将行标签与一个或多个相邻数据值分开,然后无法正确解析出相邻数据值有关. (我们可能有两个数据值映射到一个列标题而不是两个相邻的列标题。也就是说,如果我有一个标记为苹果的列标题,然后一个标记为香蕉,我可能会将值“1125 12345”分配给香蕉(或苹果)列标题,而不是将值 1125 分配给苹果,将 12345 分配给香蕉。

正如我在一开始所说的那样——我们在 95% 的时间里都做对了,我们可以在输出中判断出什么时候出现问题。我开始认为我们已经尽可能地使用 html 中的逻辑和推理来清理这些,所以我开始怀疑我是否需要一种新方法。

有没有办法利用浏览器的“引擎”来帮助这个解析器。最终,如果浏览器可以正确显示列和行,以便它们正确显示在屏幕上,那么即使行和列跨度不一致(例如),也有一些技术可以处理。

感谢您的任何意见

0 投票
1 回答
229 浏览

python - html中锚标签(a)之间的内容是否被视为lxml中的分支?

我正在尝试在 html 文档中获取一些内容。一些文档有一个目录,可以很好地指示我要删除的内容在文档中的位置。那就是标签的 value 或 text_content 很容易识别并指向我需要的内容。例如,我可能在 toc 中有两个具有以下值的锚标记

然后在文档的正文中

然后有很多 html 元素,一些表格,可能还有一些 div 标签,一些未知数量的元素,然后是下一个锚点

我正计划使用函数的输出来识别我想从文档中复制的部分的开头和结尾。那就是我要阅读文档并剪掉锚标签 listofplaces 和 transport 之间的部分。我开始认为 LXML 是如此强大,以至于我想要的内容可能是某种我无法弄清楚它的身份的分支。

0 投票
3 回答
487 浏览

python - 在必须使用正则表达式在 html 文档中查找某些内容之后,重新使用 lxml 功能的最佳方法

我正在尝试从大量 html 文档(数以十万计)中提取一些文本。这些文档实际上是表格,但它们是由一大群不同的组织准备的,因此它们创建文档的方式存在显着差异。例如,文档分为章节。我可能想从每个文档中提取第 5 章的内容,以便分析该章的内容。最初我认为这很容易,但事实证明作者可能会在整个文档中使用一组非嵌套表格来保存内容,以便可以在表格中使用 td 标签显示第 n 章。或者他们可能会使用其他元素,例如 p 标签 H 标签、div 标签或任何其他块级元素。

在反复尝试使用 lxml 来帮助我识别每章的开头和结尾之后,我确定使用正则表达式要干净得多,因为在每种情况下,无论封闭的 html 元素是什么,章节标签总是在的形式

它有点复杂,因为可能会有一些空白或不间断的空间以不同的方式(或只是空格)表示。尽管如此,编写一个正则表达式来标识每个部分的开头是微不足道的。(一节的开头是上一节的结尾。)

但现在我想使用 lxml 来获取文本。我的想法是,我真的别无选择,只能沿着我的字符串查找包含我用来查找相关部分的文本的元素的关闭标记。

这是一个示例,其中包含章节名称的元素是 div

所以我想象我将从找到第 1 章匹配项的位置开始,并设置一个正则表达式来查找下一个

所以在这一点上,我已经确定了持有我的章节标题的元素类型

我可以使用相同的逻辑来查找该元素中的所有文本,这些文本设置了一个正则表达式来帮助我标记

所以我已经确定了我的第 1 章从哪里开始

我可以为第 2 章做同样的事情(这是第 1 章的结尾)

现在我想象我要从我标识为元素的元素的开头开始剪切文档,该元素指示第 1 章的开始位置,并在我标识为指示章节位置的元素的开头之前结束2开始。然后,我确定的字符串将被馈送到 lxml 以使用它的能力来获取内容。

我会遇到所有这些麻烦,因为我一遍又一遍地阅读 - 永远不要使用正则表达式从 html 文档中提取内容,而且我还没有找到一种方法来准确地使用 lxml 来识别我要提取的文本。例如,我永远无法确定第一章的副标题是我们的起点,它可能是我们的红金丝雀。让我说,我花了两天时间尝试使用 lxml 来确信我有开始和结束元素,而且我只能在 <60% 的时间内准确,但是一个非常短的正则表达式给了我超过 95% 的成功率。

我倾向于使事情变得比必要的更复杂,所以我想知道是否有人已经看到或解决了类似的问题,以及他们是否有他们想要提供的方法(而不是细节介意)。

0 投票
1 回答
1698 浏览

python - 在python中加密XML数据库

我正在使用 XML 作为应用程序的后端...

LXML 用于解析 xml。

我如何加密这个 xml 文件以确保数据受到保护......

提前致谢。

0 投票
1 回答
536 浏览

python - etree.findall:“或”-查找?

我想在带有lxml.etree.findall. 这可能很简单

但是 CSS 样式定义的问题在于顺序很重要,例如

如果style在两个标签中的规则之后应用标签的内容link,结果可能与按照定义顺序应用规则的结果完全不同。

link[@rel="stylesheet"]那么,我将如何进行同时包含和的查找style

0 投票
2 回答
2869 浏览

python - 在使用 lxml 解析之前,我应该从 suds 输出中去除 XML 声明吗?

我正在尝试使用suds库在 Python 2.6 中实现 SOAP Web 服务。效果很好,但是在尝试使用lxml解析输出时遇到了问题。

Suds 返回一个suds.sax.text.Text带有来自 SOAP 服务的回复的对象。该类suds.sax.text.Text是 Python 内置Unicode 类的子类。本质上,它可以与以下 Python 语句相媲美:

这是不协调的,因为如果 XML 声明是正确的,则内容是 UTF-8 编码的,因此不是Python Unicode 对象(因为它们存储在一些内部编码中,如 UCS4)。

如文档所述, lxml 将拒绝解析它,因为对于它应该被解释为什么编码没有明确的答案。

在我看来,有两种方法可以摆脱这种绑定:

  1. 剥离<?xml>声明,包括编码。
  2. 使用指定的编码将 Suds 的输出转换为字节串。

目前,我从 web 服务接收的数据在 ASCII 范围内,所以任何一种方式都可以,但对我来说,这两种方式都非常像丑陋的黑客,我不太确定如果我开始会发生什么接收需要更广泛的 Unicode 字符的数据。

有什么好主意吗?我无法想象我是这个职位的第一个……</p>

0 投票
2 回答
4873 浏览

python - 从转义的 html -> 到常规的 html?- Python

我使用 BeautifulSoup 来处理通过 REST API 收集的 XML 文件。

响应包含 HTML 代码,但 BeautifulSoup 转义了所有 HTML 标记,因此可以很好地显示。

不幸的是,我需要 HTML 代码。


我将如何继续将转义的 HTML 转换为正确的标记?


非常感谢您的帮助!