python - 我可以查看使用 lxml 从 html 文档解析的元素源的实际行吗

标签 python html parsing lxml

我一直很喜欢用 lxml 操作 html。现在我想对实际文件进行一些操作,在找到满足我的需求的特定元素后,我想知道是否可以检索该元素的源。

在看到 sourceline 作为我的元素的一种方法后,我在椅子上跳来跳去,但这并没有给我我想要的东西。

some_element.sourceline

据我所知,只有当 htm 源是列表文件时才能使用 sourceline,以便获得行号。

我最好补充一点,我是通过

生成元素的
theTree=html.fromstring(open(myFileRef).read())

the_elements=[e  for e in theTree.iter()]

需要明确的是,我得到 None 作为 some_element.sourceline 的值 - 我对树中的所有 27,000 个元素进行了测试

我想做的一件事是在表达式中使用 html 源来查找文档中的特定位置,也许可以剪掉一些东西。我不能依赖元素的文本,因为文本不一定是唯一的。

已发布但被删除的一个解决方案是使用源行,但即使在将我的文件作为列表读取后,我也无法获得除源行 None 之外的任何值。我将发布另一个问题,看看是否有人有使用源代码的示例

我刚刚尝试并放弃了 html.tostring(myelement) 因为它至少自动转换一些编码(我可能没有正确地表达它)这是一个例子:

html 源代码片段

<b>  KEY 1A.&nbsp;&nbsp;&nbsp;&nbsp;REGIONAL PRODUCTION    <br>    </b>

html.tostring(the_element,method='html')

显然我没有得到原始的、未经修饰的来源。

'<b>  KEY 1A.&#160;&#160;&#160;&#160;REGIONAL PRODUCTION    <br></b>'

最佳答案

我想我发现了这个问题,因为我也遇到了同样的问题。

我相信,如果您在解析文档时对文档进行任何类型的 xslt 转换,element.sourceline 就会丢失。

当我不转换文档时,我的源代码行很好,但是,当我使用etree.XSLT时,我丢失了所有源代码行数据。

关于python - 我可以查看使用 lxml 从 html 文档解析的元素源的实际行吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3536131/

相关文章:

javascript - 我可以使用 javascript 发送电子邮件吗

language-agnostic - 我将如何手动编写复杂的公式解析器?

parsing - Powershell中的文本解析: Identify a target line and parse the next X lines to create objects

python - 谷歌 API Python unauthorized_client : Unauthorized client or scope in request

python - Django 不提供管理静态文件(Apache、mod_wsgi)

javascript - HTML 5 文件 API

json - 在 Swift 中解析 JSON 数组

python - Sklearn - 序数数据的多类混淆矩阵

python - 在 Anaconda 中升级到 scipy 1.7?

javascript - 调整窗口大小时显示隐藏元素的 slider