文章目录
- 一、html和xml
- 二、xpath获取节点属性
- 三、xpath语法
- 四、案例展示
- 总结
一、html和xml
lxml是一款高性能的 Python HTML/XML 解析器,我们可以利用XPath,来快速的定位特定元素以及获取节点信息。
区别:
1.xml被设计为传输和存储数据,其焦点是数据的内容
2.html是显示数据以及如何更好的显示数据
xml树结构展示
XML结构 eg
XPath (XML Path Language) 是一门在 HTML\XML 文档中查找信息的语言,可用来在 HTML\XML 文档中对元素和属性进行遍历。
二、xpath获取节点属性
XPath (XML Path Language) 是一门在 HTML\XML 文档中查找信息的语言,可用来在 HTML\XML 文档中对元素和属性进行遍历。
每个XML的标签我们都称之为节点,其中最顶层的节点称为根节点。
xpath中节点的关系
这里给大家推荐一个学习工具,Chrome插件(xpath_helper),百度网盘:https://pan.baidu.com/s/1UM94dcwgus4SgECuoJ-Jcg 密码:337b
三、xpath语法
-
选取节点
XPath 使用路径表达式来选取 XML 文档中的节点或者节点集。这些路径表达式和我们在常规的电脑文件系统中看到的表达式非常相似。
-
查找特定的节点
注意点:
在xpath中,第一个元素的位置是1,最后一个元素的位置是last(),倒数第二个是last()-1 -
选取未知节点
为了加强对xpath的理解,多多练习才是正道:https://movie.douban.com/top250
练习1
- 选择所有的h1下的文本
//h1/text() - 获取所有的a标签的href
//a/@href - 获取html下的head下的title的文本
/html/head/title/text() - 获取html下的head下的link标签的href
/html/head/link/@href
练习2
从豆瓣电影top250的页面中:选择所有的电影的名称,href,评分,评价人数
四、案例展示
xpath提取豆瓣单页内容
from lxml import etree
import requests
if __name__ == '__main__':
url_ = 'https://movie.douban.com/top250'
headers_ = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36'
}
response_ = requests.get(url_,headers=headers_)
str_data = response_.text
print(response_.text)
# 在提取任何网站的文本数据之前,先打印响应文本看看有没有想要的数据,如果有,再往下写代码,如果没有,再重新找数据包
# str类型无法直接被xpath识取
html_obj = etree.HTML(str_data)
title_list = html_obj.xpath('//a/span[@class="title"][1]/text()')
# print(len(title_list),title_list)
url_list = html_obj.xpath('//div[@class="hd"]/a[@class=""]/@href')
# print(len(url_list),url_list)
dict_ = {}
for i in range(len(title_list)):
dict_[title_list[i]] = url_list[i]
print(dict_)
总结
这两天我们学习的量有点大,各位uu们可以根据自己的情况来学习,主要是去多花时间练习。
以良好的心态面对生活,你的生活才美好。