python xpath常用代码功能

1、从文件中读取html内容,然后xpath加载 

with open('FilePath', 'r',encoding='utf8') as file:
    html = file.read()  
tree = etree.HTML(html)

2、基本定位语法

/    从根节点开始选取    /html/div/span
//    从任意节点开始选取    //input
.    选取当前节点     
..    选取当前节点的父节点   

3、正则表达式匹配内容

  CitedNames = item.xpath('.//a[re:test(text(),"[^View All]")]/text()',

                namespaces={"re": "http://exslt.org/regular-expressions"})

其中[^View All]是正则表达式部分,这里是text不等于View All的;需要注意的是,如果是等于,则不需要[],即直接用,如:

 skill = tree.xpath('//div[@class="nova-c-card__body nova-c-card__body--spacing-inherit"]//b[re:test(text(),"Skills and Expertise")]/text()',
                namespaces={"re": "http://exslt.org/regular-expressions"})

xpath中的.是当前节点开始;item是我当前要处理的节点。

说明:这里我使用的是re:test,因为re:test比re:match更高效,因为test返回的是一个布尔值,而match返回的是满足条件的数组,随意根据自己的需求调整。

不包括的写法:not(contains(xx,"具体内容"),如:

 #text中不包括[...]的
resInfo['authors'] = researchItem[3].xpath('.//span[not(contains(text(),"[...]"))]/text()')
#如果是属性中不包括的则,如,a中href不包含more的
resInfo['authors'] = researchItem[3].xpath('.//a[not(contains(@href,"more"))]/text()')

4、当前节点的父节点的父节点

..为当前节点的父节点的选择,父节点的父节点即是../../;如:

 skill[0].xpath('../..//a[re:test(text(),"[^Show more]")]/text()',
                namespaces={"re": "http://exslt.org/regular-expressions"})

5、根据id或class检索

#从根节点开始找id为xxx的div 
researchItemDiv = tree.xpath('//div[@id="research-items"]')

#从根节点出发找class为xxx的div内的文本
aboutArr = tree.xpath('//div[@class="nova-c-card__body nova-c-card__body--spacing-inherit"]//text()')

6、获取属性值

#获取class为xxx的div下的所有li的col属性的值
 lis = tree.xpath('//div[@class="jbxx-content"]//li/@col')

相关推荐

  1. python xpath代码功能

    2024-07-16 14:20:05       26 阅读
  2. Nginx功能

    2024-07-16 14:20:05       55 阅读
  3. nginx 功能

    2024-07-16 14:20:05       37 阅读
  4. MySQL 功能

    2024-07-16 14:20:05       25 阅读
  5. TensorFlow 代码

    2024-07-16 14:20:05       38 阅读
  6. python 功能积累

    2024-07-16 14:20:05       41 阅读
  7. python--简单功能

    2024-07-16 14:20:05       40 阅读
  8. tensorflow 代码片段

    2024-07-16 14:20:05       62 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-16 14:20:05       67 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-16 14:20:05       72 阅读
  3. 在Django里面运行非项目文件

    2024-07-16 14:20:05       58 阅读
  4. Python语言-面向对象

    2024-07-16 14:20:05       69 阅读

热门阅读

  1. 语法基础部分

    2024-07-16 14:20:05       25 阅读
  2. gradio构建webui

    2024-07-16 14:20:05       25 阅读
  3. C++中const关键字的深度探索与应用实践

    2024-07-16 14:20:05       21 阅读
  4. ChatGPT对话:如何把Html文件转换为Markdown文件

    2024-07-16 14:20:05       18 阅读
  5. 第2部分:物联网模式在行动

    2024-07-16 14:20:05       19 阅读
  6. c# 在线程中访问ui元素

    2024-07-16 14:20:05       22 阅读
  7. C语言入门-7.结构体与C++引用

    2024-07-16 14:20:05       23 阅读