为什么要学习XPATH和LXML类库
可以利⽤ Xpath 来快速的定位特定元素以及获取节点信息,我们可以理解 为对 html 或 xml 形式的⽂本提取特定的内容
什么是XPATH
Xpath 全称是 xml path language ,Xpath是⼀⻔在 HTML/XML ⽂档中查 找信息的语⾔,可⽤来在HTML/XML ⽂档中对元素和属性进⾏遍 历, XPath 使⽤路径表达式来选取 HTML/XML ⽂档中的节点或者节点集
认识XML
XML的节点关系
节点的概念:每个XML的标签我们都称之为节点 ,其中最顶层的节点称为根节
点
节点选择语法
节点修饰语法
选择未知节点
lxml库
lxml 是 ⼀个HTML/XML的解析器,主要的功能是如何解析和提取 HTML/XML 数据。
利⽤etree.HTML,将字符串转化为Element对象
lxml python 官⽅⽂档: http://lxml.de/index.html 可使⽤ pip 安装: pip install lxml (或通过wheel⽅式安装)
lxml 可以⾃动修正 html 代码
安装:
下面我来爬取一个页面来给小可爱们
代码:
import requests from lxml import etree def parse_data(html): # 创建一个xpath对象 e_html=etree.HTML(html) # print(e_html.xpath('//main[@id="c-626160000"]')) for i in e_html.xpath('//main[@id="c-626160000"]'): print("/n".join(i.xpath('./p//text()')).strip()) return "".join(i.xpath('./p//text()')).strip() def save_data(data): with open("小说.txt","w",encoding="utf-8")as f: f.write(data) def parse_url(url,header): response = requests.get(url) return response def main(): """主要的业务逻辑""" # url url = "https://www.qidian.com/chapter/1021617576/626160000/" header = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36" } # 发送请求获取响应 response = parse_url(url, header) # print(response.text) html = response.text # 数据的提取 data = parse_data(html) # 保存 save_data(data) if __name__ == '__main__': main()
结果:
总结
这里我简单的介绍了xpath的使用和语法,小可爱有哪些不明白的可以私聊了