我一直很乐意使用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源来查找文档中的特定位置,也许是为了剪掉一些东西。我不能依赖元素的文本,因为文本不一定是唯一的。
已发布但已删除的一个解决方案是使用源代码,但即使在我的文件中读取列表之后,我也无法获得除源代码之外的任何其他值。我将发布另一个问题,看看是否有人使用sourceline
我只是尝试并丢弃了html.tostring(myelement),因为它自动转换了至少一些编码(我可能没有正确地说这个)这是一个例子:
剪辑html源
<b> KEY 1A. REGIONAL PRODUCTION <br> </b>
html.tostring(the_element,method='html')
显然,我没有得到原始的,没有玷污的来源。
'<b> KEY 1A.    REGIONAL PRODUCTION <br></b>'
答案 0 :(得分:3)
我想我发现了这个问题,因为我遇到了同样的问题。
如果您在解析文档时对文档执行任何类型的xslt转换,我相信element.sourceline
会丢失。
当我不转换文档时,我得到的源代码很好,但是,当我使用etree.XSLT
时,我丢失了所有源代码行数据。