使用LXML和XPATH解析后显示完整路径

用户名

有没有办法显示:(a)到定位节点的完整路径?(b)显示路径节点的属性,即使我不知道这些属性可能被称为什么?

例如,给定一个页面:

<!DOCTYPE html>
<HTML lang="en">
<HEAD>
  <META name="generator" content=
    "HTML Tidy for HTML5 for Linux version 5.2.0">
  <META charset="utf-8">
  <TITLE>blah ombid lipsum</TITLE>
</HEAD>
<BODY>
  <P>I'm the expected content</P>
  <DIV unexpectedattribute="very unexpected">
    <P>I'm wanted but not where you thought I'd be</P>
    <P class="strangeParagraphType">I'm also wanted text but also mislocated</P>
  </DIV>
</BODY>
</HTML>

我能找到想要的文字

# Import Python libraries
import sys
from lxml import html

page = open( 'findme.html' ).read()
tree  = html.fromstring(page)

wantedText = tree.xpath(
  '//*[contains(text(),"wanted text")]' )

print( len( wantedText ), ' item(s) of wanted text found')

然而,找到它之后,我希望能够打印出所需文本位于以下位置的事实:/HTML/BODY/DIV/P...甚至更好地表明其位于/HTML/BODY/DIV/P[2]...,并且更好地显示出它位于/DIV具有unexpectedattribute="very unexpected"且最终<P>具有的类的那个位置strangeParagraphType

库尔齐

对于第一个示例,可以使用如下所示的内容:

['/'.join(list([wt.tag] + [ancestor.tag for ancestor in wt.iterancestors()])[::-1]).upper() for wt in wantedText]

可以使用元素对象上的attrib属性和一些自定义逻辑来创建第三个:

wantedText[0].getparent().attrib
>>> {'unexpectedattribute': 'very unexpected'}
wantedText[0].attrib
>>> {'class': 'strangeParagraphType'}

编辑:顶部重复答案链接绝对是一个更好的方法。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何使用cmd递归查找所有文件并显示完整路径和行号?

使用 lxml 和 xpath 解析

使用`ls`仅打印文件和目录的完整路径

如何显示模块的完整路径

__FILE__宏显示完整路径

ls 递归,显示完整路径

显示名称中包含关键字的所有文件的完整路径和名称

使用SQL Server从完整路径解析HTML文件名

如何配置bash始终解析符号链接的完整路径

在find -exec中同时使用基本名和完整路径

CMake使用foreach和find_library返回库的完整路径

在命令行中使用完整路径和参数运行Powershell命令

如何使用jsp和javascript从完整路径(系统位置)播放视频?

使用Argparse从相对路径获取完整路径

完整路径的zsh主题+显示git更改

aureport可以显示文件的完整路径吗?

在终端中显示文件的完整路径

如何使tcsh shell标题显示当前目录的完整路径?

使用 lxml 和 xpath 加速 xml 解析过程

无法找到完整路径g ++和gcc

神社-Cloudfront的派生端点和完整路径URL

使用子目录列出指定路径中具有完整路径和大小的所有文件名

在Spring Controller中指定视图文件的完整路径,而不是使用视图解析器

使用对象的完整路径访问对象的属性值

使用php浏览文件时写入文件的完整路径

可以使用tar删除“即时”完整路径吗?

使用BATCH清理文件名以命名完整路径

如何使用PHP从完整路径获取文件名?

如何使用JavaScript从完整路径获取文件名?