python中xpath语法怎么用_Python Xpath语法

一、python数据提取xpath

1.beautifulsoup xpath 正则表达式

2.xpath是一种在XML和HTML文档中查找信息的语言,可用来在XML和HTML中对元素进行遍历  Chrome XPath Helper

3.XPath语法

(1)选取节点:使用路径表达式来选取文档中的节点

nodename  选取节点的所有子节点  //div

/ 如果是在最前面,代表从根节点选取,否则选择某节点下的某个节点 一个/代表直接子节点(一个网页的直接子节点是HTML) 两个//代表子孙节点  /html/body 代表查找的是html下面的直接子节点body

@选取某个节点的属性  //div[@id]选取所有拥有id属性的div节点

(2)谓语

/bookstore/book[1] 选取bookstore中的第一个book元素

/bookstore/book[last()] 选取bookstore中的最后一个book元素

/bookstore/book[position()<3] 选取bookstore下前面两个子元素

//div[contains(@class,"fl")] 模糊匹配

(3)//dl[@class="job" and  @id="jong"] 获取即拥有class也有id属性的dl

使用//获取整个页面当中的元素,然后写标签名写谓词进行提取

需要注意:

/和//区别 /代表只获取直接子节点 //获取子孙节点

contains:有时候某个属性包含了多个值,可以使用contains

代码:

//div[contains(@class="job")]

谓词的下标是从1开始的

二、lxml库

基本使用:

六个双引号可以加入多行代码作为字符串

from lxml import etree

html=etree.HTML.(text)   html不是一个字符串,是一个Element类型的对象

print(etree.tostringt(htmlElement,encoding='utf-8')).decode('utf-8')

def parse_lago_file():

parse=etree.HTMLParser(encoding='utf-8')  制定用html的解析器,parse方法默认的是xml的解析器,如果html代码不规范,出现错误的标签,使用xml的解析器会报错,因此要换成html的解析器

htmlElement=etree.parse("lago.html",parse=parse)

print(etree.tostringt(htmlElement,encoding='utf-8')).decode('utf-8') parse方法不能处理有问题的标签,会报错

1.解析html字符串,使用‘lxml.etree.HTML’进行解析

html=etree.HTML.(text)   html不是一个字符串,是一个Element类型的对象

print(etree.tostring(htmlElement,encoding='utf-8')).decode('utf-8')

2.解析html文件,使用‘lxml.etree.parse’进行解析,这个函数默认使用的是‘xml’解析器,如果碰到一些不规范的‘HTML’代码的时候就会出现解析错误,就要创建‘HTML’解析器

xpath函数返回的是一个列表

3.for tr in trs:

href=tr.xpath(".//a")

注意在trs中寻找a标签,需要在//前面加一个.,否则就会在整个html中寻找a标签

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值