🕶️师兄简介:机械专业,通过自学成功进入IT领域,求学期间实现经济独立,对自学、兼职、计算机、学习规划等有独到见解!「点击了解更多」
🤖师兄致力解决在大学生活与学习中遇到的各种问题.
🎁 公众号「渣师兄」内回复「渣学」可获得超 5T 的新生见面礼!
🔗官方网站: 渣学网 →「zhaxueit.cn」→ 大学生活与学习一站式解决方案.
🙏找师兄帮忙「无偿」请➕💓:zhaxueit
📓进资源群「每日分享」【免费】(坑位有限)也请➕💓:zhaxueit 并备注「进群」
👀个人主页:@渣师兄 ,欢迎关注、私信师兄!
🐐 登高必自卑,行远必自迩.
🍇 我始终坚信越努力越幸运
⭐️ 那些打不倒我们的终将会让我们变得强大
🍑 希望在编程道路上深耕的小伙伴都会越来越好
文章目录
xpath语法详解
目标:
1:掌握什么是 xpath
2:掌握 xpath 匹配数据的几种语法格式
3:使用 xpath 的一些注意事项
xpath
答:xpath 是在 xml 文档中匹配数据的一种查询语言(俗称xml路径语言),因为 xml 文档与 html 文档结构非常类似,所以 xpath 也可以用在匹配 html 文档数据中(爬虫提取数据)
xpath匹配数据的几种语法格式
/div
匹配文档中所有的 div 标签,返回匹配的内容对象
/div/p
匹配文档中所有的div标签下的一级 p 标签,返回 p 标签下(包括p标签子标签)的所有的文本内容对象(是文本结点对象,不是字符串类型的文本)
/div//p
匹配文档中所有 div 标签下的所有级别 p 标签(包含在div标签内其他标签下p标签),返回 p 标签下(包括p标签内子标签)的所有的文本内容对象(是文本结点对象,不是字符串类型的文本)
/div/p[1]
匹配文档中所有div标签内的第一个 p 标签,返回这个 p 标签下的所有文本内容对象
/div[@class="name"]
匹配文档中属性包含 class="name"的所有div标签,返回这个div标签下的所有文本内容对象
/div/p@src
匹配文档内所有div标签下的p标签,获取p标签中src属性的值(是字符串类型不是文本对象类型)
/div[@class="byd"] | //div[@class="bm"]
匹配文档内class属性为“byd”或者“bm”的所有div标签,返回下面所有标签的文本内容对象(不是字符串类型)
/li[ contains(@class,"car_")]
匹配class属性中包含“car_”内容的所有 li 标签,返回下面所有标签的文本内容对象(不是字符串类型)
/li[@class="name"]/text()
匹配 class 属性值为“name’”的所有 li 标签,并且返回 li 标签中(不包括li子标签)的文本内容(字符串类型)
整体图示
path 的一些注意事项
最重要一条:xpath语法的开头查找标签必须要加两条//,一条/不能成功匹配
1.xpath语法中只要与条件有关,就要在条件两侧加上 [ ]
2.xpath语法内只要与标签属性有关,就要在属性前面加上@
3.xpath语法中末尾是 /text()或者 /@属性值,那么获取的值就是字符串类型的文本内容,除此之外获取的全部都是文本内容对象(不是字符串)
4.xpath语法是 //div/p/text(),只匹配所有div标签下p标签中的文本内容(字符串),不能匹配p标签下其他子标签的文本内容!!!
5.xpath语法是 //div/p,匹配所有div标签下p标签中(包含p标签下的其他子标签)的文本内容对象(不是字符串)
6.html一段文档是 <p class=“name”, id=6> 姓名
,其中class与id都是属性,匹配的文本内容是姓名,不是其他的!lxml库搭配xpath语法实现数据提取【重点】
目标:
1:掌握 python 的第三方库 lxml 搭配 xpath 语法在 html 文档内提取数据的使用方法!
2:掌握 for 循环的另外一种用法以及怎么将列表内元素拼接为一个字符串
on 的第三方库 lxml 搭配 xpath 语法在 html 文档内提取数据的使用方法!
lxml库功能:与 xpath 语法搭配使用从而在 html 或者 xml 文档中提取出自己想要的数据
lxml库安装(unubtu):pip3 install lxml
lxml库在html文档代码内提取数据使用步骤:
from lxml import etree 导入模块
lxml_obj = etree.HTML( 网页的html源代码 ) 创建 lxml 对象用于提取数据
data_list = lxml_obj.xpath(xpath语法) 利用 xpath 语法从网页的html源代码中提取数据
lxml库搭配xpath语法在html文档中提取数据(电影、汽车等)最常用法如下:
from lxml import etree 导入模块
lxml_obj = etree.HTML( 网页的html源代码 ) 创建 lxml 对象用于提取数据
lable_obj_list = lxml_obj.xpath(xpath语法) 利用 xpath 语法从网页的 html 源代码中 提取 数据存在的 标签结点对象
for lable in data_list: for循环遍历这个标签结点对象
data_list = lable.xpath(xpath语法) 调用这个标签结点对象的xpath方法,在当前路径下匹配数据
print(data_list) 打印数据
注意事项:
1:只要 lxml 对象调用了 xpath 方法,那么获取的数据类型一定是列表!!!!
2:在 html 文档中提取数据最常用法中通过 for 循环遍历数据结点对象里面那个xpath语法(第二个xpath)开头要以 . 开头,表示在当前标签结点下查找标签数据!
代码体验(提取数据使用步骤):
最常用法截图:
持续更新中…