* python爬虫中xpath的使用方法
<https://blog.csdn.net/meiqi0538/article/details/80347837#python爬虫中xpath的使用方法>
* 前言 <https://blog.csdn.net/meiqi0538/article/details/80347837#前言>
* 使用案例 <https://blog.csdn.net/meiqi0538/article/details/80347837#使用案例>
* 01.通过对应的a标签获取a标签中的内容
<https://blog.csdn.net/meiqi0538/article/details/80347837#01通过对应的a标签获取a标签中的内容>
* 02.获取指定路径下a标签的属性
<https://blog.csdn.net/meiqi0538/article/details/80347837#02获取指定路径下a标签的属性>
* 03.获取绝对路径下a标签属性等于link2.html的内容
<https://blog.csdn.net/meiqi0538/article/details/80347837#03获取绝对路径下a标签属性等于link2html的内容>
* 04.(相对路径)查找所有li标签下的a标签内容
<https://blog.csdn.net/meiqi0538/article/details/80347837#04相对路径查找所有li标签下的a标签内容>
* 05.相对路径获取标签的属性
<https://blog.csdn.net/meiqi0538/article/details/80347837#05相对路径获取标签的属性>
* 06.相对路径下查特定属性的方法
<https://blog.csdn.net/meiqi0538/article/details/80347837#06相对路径下查特定属性的方法>
* 07.查找倒数第二个li标签里的a标签的href属性
<https://blog.csdn.net/meiqi0538/article/details/80347837#07查找倒数第二个li标签里的a标签的href属性>
* 在浏览器中获取xpath方法
<https://blog.csdn.net/meiqi0538/article/details/80347837#在浏览器中获取xpath方法>


python爬虫中xpath的使用方法

前言

这里默认读者已经按照lxml包,因此在使用一下案例的使用,第一步就是导入包:
from lxml import etree
使用案例

这里都使用一下的测试文本
#测试html文档 wb_data = """ <div> <ul> <li class="item-0"><a href="link1.html">
first item</a></li> <li class="item-1"><a href="link2.html">second item</a></li>
<li class="item-inactive"><a href="link3.html">third item</a></li> <li class=
"item-1"><a href="link4.html">fourth item</a></li> <li class="item-0"><a href=
"link5.html">fifth item</a> </ul> </div> """
使用包方法,获取一个一个html页面的对象,需要说明的是,这里会自动补全页面中缺失的必要标签。
#使用etree的HTML方法获取数据,返回的是一个节点对象 html = etree.HTML(wb_data)
读者可以使用:print((etree.tostring(html)).decode("UTF-8"))进行测试。

01.通过对应的a标签获取a标签中的内容
html = etree.HTML(wb_data) html_data=html.xpath("/html/body/div/ul/li/a")
#此时返回的是各个标签对象 for i in html_data: print(i.text)
结果为:
first item second item third item fourth item fifth item
当然也可以改变xpath的值,使用:"/html/body/div/ul/li/a/text()"返回一个列表:['first item', 'second
item', 'third item', 'fourth item', 'fifth item']


02.获取指定路径下a标签的属性
html = etree.HTML(wb_data) html_data=html.xpath("/html/body/div/ul/li/a/@href")
#返回一个列表 print(html_data)
结果为:['link1.html', 'link2.html', 'link3.html', 'link4.html', 'link5.html']

03.获取绝对路径下a标签属性等于link2.html的内容
html_data=html.xpath('/html/body/div/ul/li/a[@href="link2.html"]/text()') print
(html_data)
结果为:['second item']

04.(相对路径)查找所有li标签下的a标签内容
html_data=html.xpath("//li/a/text()") print(html_data)
结果为:['first item', 'second item', 'third item', 'fourth item', 'fifth item']

05.相对路径获取标签的属性
html_data=html.xpath("//li/a/@href") print(html_data)
结果为:['link1.html', 'link2.html', 'link3.html', 'link4.html', 'link5.html']

06.相对路径下查特定属性的方法
html_data=html.xpath("//li/a[@href='link2.html']/text()") print(html_data)
结果为:['second item']

07.查找倒数第二个li标签里的a标签的href属性
html_data = html.xpath('//li[last()-1]/a/text()') print(html_data)
结果:['fourth item']
当然获取最后一个标签为:li[last()]

在浏览器中获取xpath方法

这个可以参考本人博客关于使用requests爬取酷狗hot500的案例
<https://blog.csdn.net/meiqi0538/article/details/79476300>
更多关于自然语言处理,机器学习,python使用等可以关注博主的个人微信订阅号:

友情链接
ioDraw流程图
API参考文档
OK工具箱
云服务器优惠
阿里云优惠券
腾讯云优惠券
华为云优惠券
站点信息
问题反馈
邮箱:ixiaoyang8@qq.com
QQ群:637538335
关注微信