python 爬虫 xpath 详解

python 爬虫 xpath 详解

导入模块

from lxml import etree

实例化一个etree对象

tree=etree.parse('test.html') #将网页源码解析并加载到了该对象中

xpath表达式

层级定位

/:表示的是从根节点开始定位,表示的是一个层级
r=tree.xpath('/html/body/div')
#'/html':根目录开始查找
#r:返回值是一个列表
#查找的是全部符合表达式的结果
//:表示的是多个层级,可以表示从任意位置开始定位
r=tree.xpath('/html//div')
#'//'中间代表多层级,查找html标签下的所有div标签
r=tree.xpath('//div')
#从任意位置寻找div标签,找到源码中所有div标签

属性定位

tag[@attrName=“attrValue”]
r=tree.xpath('//div[@class="song"]')
#获取的是<div class="song">属性定位</div>
#xpath()方法返回的始终是一个列表
r=tree.xpath('//div[@class="song"]/p')
#获取的是<div class="song"><p>属性定位</p></div>
#获取div属性是class="song"的直系p标签

索引定位

//div[@class=“song”]/p[3]
r=tree.xpath('//div[@class="song"]/p[3]')
#获取div属性是class="song"的直系p标签的第三个
#索引是从1开始的

取文本

/text()
r=tree.xpath('//div[@class="song"]/li[5]/a/text()')[0]
#直接/text()就可以取到文本
#但是返回值是列表
#结尾加上[0]就可以取到
#获取标签直系文本内容
//text()
r=tree.xpath('//li[7]//text()')
#获取标签下所有文本内容
#返回的是列表

取属性

/@attrName ==>img/src
r=tree.xpath('//div[@class="song"]/img/@src')
# /@属性名 即可直接取到属性值
# 返回的是列表

与或

" | "
r=tree.xpath('//li[7]//text() | //li[5]//text()')
#获取两种表达式的结果,用|分开xpath表达式

总结

python爬虫中需要数据解析,一般用到的是 正则、BeautifulSoup、xpath。其中xpath、正则是各种语言通用的,BeautifulSoup是专属于python的。正则解析的话略显复杂,建议工作还是日常首选xpath。

  • 3
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值