xpath

mac2022-06-30  149

xpath知识储备

-1.下载:pip install lxml -2.导包:from lxml import etree -3.创建etree对象进行指定对象的解析 -本地:etree=etree.parse('本地文件路径') etree.xpath('xpath表达式') -网络:etree=etree.parse('网络请求到的页面数据') etree.xpath('xpath表达式')

xpath常用表达式

- 属性定位: 找到class属性为song的div标签 //div[@class="song"]- 层级&索引定位 找到class为tang的div直系子标签下的ul下的第二个li下的a //div[class="tang"]/ul/li[2]/a- 逻辑定位 找到href属性为空且class属性为do的a标签 //a[@href="" and @class="du"]- 模糊匹配 //div[contains(@class, "ng")] 包含 //div[starts-with(@class,"ta")] 以。。。开头- 取文本 /text() 表示获取某个标签下的文本内容 //text() 表示获取某个标签下的文本内容和所有子标签的文本内容 //div[@class="song"]/p[1]/text() //div[@class="tang"]//text()- 取属性 //div[@class="tang"]//li[2]/a/@href注意: 返回值都是列表

练习

需求:用xpath对段子网的内容和标题进行解析,持久化存储 import requests from lxml import etree #1.指定url url='https://ishuo.cn/joke/' #2.发起请求 # 自定义请求头信息 headers={ 'User-Agent':'Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36' } response = requests.get(url,headers=headers) #3.获取数据 page_text=response.text #4.解析数据 tree = etree.HTML(page_text) # 获取所有的li标签 返回列表中是element类型对象,可以继续调用xpath对其中的内容进行解析 li_list = tree.xpath('//div[@id="list"]/ul/li') f = open('./段子.txt','w',encoding='utf-8') for li in li_list: title = li.xpath('./div[@class="info"]/a/text()')[0] content = li.xpath('./div[@class="content"]/text()')[0] #5.持久化存储 f.write(title+'\n '+content+'\n\n') print('写入完成')

xpath插件

可以直接将表达式作用于浏览器当中,测试通过再用到代码中。

- 安装:更多工具》》拓展程序》》开启开发者模式》》将网上下载的xpath插件拖动到页面 -打开关闭的快捷键:ctrl+shift+x

转载于:https://www.cnblogs.com/yuliangkaiyue/p/10001701.html

相关资源:XPath-Helper 爬虫 网络
最新回复(0)