我一直很喜欢用 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. REGIONAL PRODUCTION <br> </b>
html.tostring(the_element,method='html')
显然我没有得到原始的、未经修饰的来源。
'<b> KEY 1A.    REGIONAL PRODUCTION <br></b>'
最佳答案
我想我发现了这个问题,因为我也遇到了同样的问题。
我相信,如果您在解析文档时对文档进行任何类型的 xslt 转换,element.sourceline
就会丢失。
当我不转换文档时,我的源代码行很好,但是,当我使用etree.XSLT
时,我丢失了所有源代码行数据。
关于python - 我可以查看使用 lxml 从 html 文档解析的元素源的实际行吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3536131/