Python爬虫--XPath解析数据

1.XPath

XPath(XML Path Language)是一种在XML文档中查找信息的语言。

XPath的优点:可在XML中查找信息,支持HTML的查找,可通过元素和属性进行导航。

使用时需安装lxml库:pip install lxml

2.XML的树形结构

 <?xml  version = "1.0"  encoding = "UTF-8"?>

<bookstore>

        <book>

                <title  lang = "en">Harry  Potter</title>

                <author>J K.Rowling</author>

                <year>2005</year>

                <price>29.99</price>

        </book>

</bookstore>

3.使用XPath选取节点

表达式描述
nodename选取此节点的所有子节点
/从根节点选择
//从任意位置选择文档中的节点
.选择当前节点
..选择当前节点的父节点
/text()获取当前路径下标签的属性值
/@xxx提取当前路径下标签的属性值
|可选符//p|//div表示在当前路径下选取所有符合条件的p标签和div标签
表达式描述
xpath('/body/div[1]')选取body下第一个div节点
xpath('/body/div[last()]')选取body下最后一个div节点
xpath('/body/div[last()-1]')选取body下倒数第二个div节点
xpath('/body/div[position()<3]')选取body下前两个div节点
xpath('/body/div[@class]')选取body下带有class属性的div节点
xpath('/body/div[@class="main"]')选取body下class属性为main的div节点
xpath('/body/div[price>35.00]')选取body下price元素大于35的div节点

4.获取起点小说网排行榜小说名和作者

import requests
from lxml import etree
url = 'https://www.qidian.com/rank/yuepiao'
#伪装成浏览器
headers = {'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36'}
#发送get请求
resp = requests.get(url,headers)
e = etree.HTML(resp.text) #将str类型转为etree._Element类型
#小说名
names = e.xpath('//div[@class="book-mid-info"]/h2/a/text()')
#作者名
authors =e.xpath('//p[@class="author"]/a[1]/text()')
#压缩,使作者和小说一起展示
for name,author in zip(names,authors):
    print(name,":",author)

运行结果:

星门 : 老鹰吃小鸡
明克街13号 : 纯洁滴小龙
大魏读书人 : 七月未时
夜的命名术 : 会说话的肘子
宇宙职业选手 : 我吃西红柿
不科学御兽 : 轻泉流响
术师手册 : 听日
我就是不按套路出牌 : 百分之七
我的基因无限进化 : 青空洗雨
全职艺术家 : 我最白
视死如归魏君子 : 平层
大梦主 : 忘语
复活帝国 : 火中物
从红月开始 : 黑山老鬼
东晋北府一丘八 : 指云笑天道1
深空彼岸 : 辰东
重生之似水流年 : 苍山月
这游戏也太真实了 : 晨星LL
长夜余火 : 爱潜水的乌贼
女主从书里跑出来了怎么办 : 镭射瓶

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值