修Bug之旅 - xpath
type: channel
link: https://xiubug.cn/tag/xpath/
items: Python网络爬虫中Xpath表达式语法

Python网络爬虫中Xpath表达式语法
type: item
date: 2023-07-30T23:50:00+08:00
description: pycharm中使用xpath的方式导入模块from lxml import etree创建etree对象etree1=etree.HTML(response.content.decode('utf-8'))使用xpath语法text_list=etree1.xpath('/html/body/div/div/a[2]/div/div/div[2]/p/text()')/ ：表示从根节点开始定位，每个/表示的是一个层级 类似绝对定位//：表示的是多个层级，可以表示从任意位置开始定位 类似相对定位/标签名[@属性名=“属性值”] ：表示属性定位 例：/div[@class=“abc”]/标签名1/标签名2[索引值]：标签索引定位 例：/div/p[1] 表示 div标签下的第一个p标签 ，注意这里的索引是从1开始的而不是0开始/text()：表示取定位到标签中直系的文本，返回的是一个列表数据 //text(): 表示取定位到标签中的非直系或非直系的文本(即取定位到标签中的所有文本内容)，返回的是一个列表数据/标签名/@属性名：表示取定位到的标签中属性的值 例：/div/@class ./：表示从上一级标签开始定位|:表示或者 用于在多个xpath语法中 例：('/div/p/text() | /div/a/text()') 返回的也是一个列表通用处理中文乱码的解决方案变量名.encode('iso-8859-1').decode('gbk')某个标签索引大于某个值或小于某个值的标签比如所有div标签中从第二个往后的所有标签：/div[position()>1]