目录
XML、Xpath理论知识
xpath解析:最常用且最便捷高效的一种解析方式,同时也是通用性最强的一种方式。
xpath解析原理:
1.实例化一个etree的对象,且需要将被解析的页面源码数据加载到该对象中。
2.调用etree对象中的xpath方法结合着xpath表达式实现标签的定位和内容的捕获。
实例化一个etree对象:from lxml import etree
1.将本地的html文档中的源码数据加载到etree对象中:
etree.parse(filePath)
2.可以将从互联网上获取的源码数据加载到该对象中:
etree.HTML('page_text')
xpath('xpath表达式'):
/:表示的是从根节点开始定位。表示的是一个层级
//:表示的是多个层级;可以表示从任意位置开始定位。
属性定位://div[@class="song"] 语法:tag[@attrName="attrValue"]
索引定位://div[@class="song"]/p[3] 索引是从1开始的
取文本:
/text() 获取的是标签中的直系文本内容
//text() 获取标签中非直系文本的内容(所有的文本内容)
取属性:
/attrName ==>img/src
安装Xpath
链接:百度网盘 请输入提取码
提取码:qtik
下载好添加到浏览器的扩展程序。如果拖曳过去显示无效,就把cxr后缀修改为zip的
获取起点月票榜的小说名称
获取作者名称
pycharm实战
代码部分
import requests
from lxml import etree
url='https://www.qidian.com/rank/yuepiao/'
headers={'user-agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36'}
#发送请求
resp=requests.get(url,headers)
e=etree.HTML(resp.text) #类型转换 将str类型转换成 class 'lxml.etree._Element'
#print(type(e))
names=e.xpath('//div[@class="book-mid-info"]/h2/a/text()')
authors=e.xpath('//p[@class="author"]/a[1]/text()')
#print(names)
#print(authors)
for name,author in zip(names,authors):
print(name,":",author)