| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> Python知识库 -> 十五分钟掌握python爬虫XPath库【万字图文&&建议收藏】 -> 正文阅读 |
|
[Python知识库]十五分钟掌握python爬虫XPath库【万字图文&&建议收藏】 |
?👻相信不少小伙伴们通过我的两篇万字博文的轮番轰炸已经实现了从入坑到会完全学会requests库,并且可以独立开发出属于自己的小爬虫项目!!!——爬虫之路,永无止境~👻 ?💦第一篇爬虫入坑文;一篇万字博文带你入坑爬虫这条不归路 【万字图文】💦 ? ?😬但是爬虫爬虫,重在爬取到我们想要的数据,那么我们该如何提取页面中我们所需要的信息呢?为了让小伙伴们更加深入的学习本文所讲的页面解析库,我先一步肝了一篇HTML万字详解,希望小伙伴们认认真真看完,看明白,看懂,多敲敲,日后你们自会感受到本博主的用意——HTML两万字王者笔记大总结【??熬夜整理&建议收藏??】(上篇)和HTML两万字王者笔记大总结【??熬夜整理&建议收藏??】(下篇)😬 ???????👇 ?😜爬取到我们想要的数据——专业点说就是进行页面解析!对于网页的节点来说,它可以定义id,class等多种属性。而且节点之间还有层次关系,在网页中可以通过XPath或CSS选择器来定位一个或多个节点。那么,在页面解析时,利用XPath或CSS选择器来提取某个节点,然后调用相应方法获取它的正文内容或者属性,不就可以提取我们想要的信息了吗!😜 ??我们伟大的Python已经为我们封装了很多实现上述操作的解析库,其中比较强大&&用的较多的有lxml,Beautiful Soup,pyquery等。本篇博文带领小伙伴们走入XPath(我们日后最常用/最实用的解析库之一)的世界!
??bs4&&XPath??💎1.XPath(路径表达式)🎉(1)简介:??XPath 是一门在 XML 文档中查找信息的语言,但它同样可用于HTML文档的搜索。(相比于BeautifulSoup,Xpath在提取数据时会更有效率)
🎅(2)安装:??在python中很多库都提供XPath的功能,但是最流行的还是lxml这个库,效率最高。(直接pip install lxml 即可)
🎃(3)常用规则:
🎈(2)实例引入:??(我们定义一个text字符串模拟爬取到的页面数据)
??注意上面HTML文本中的最后一个div节点是没有闭合的,但是etree模块可以自动补全HTML文本,为了观察被自动补全后的HTML文本,再调用tostring()方法,注意结果是bytes类型,所以需要decode()方法将其转为str类型!
👻(3)各种常用操作详解?战前准备第一步——自定义一个HTML文本模拟爬取到的页面数据!
?💝战前准备第二步——构造XPath解析对象!
🏄(1)常用规则详解:??XPath使用路径表达式在 XML/HTML 文档中选取节点。节点是通过沿着路径或者 step 来选取的。(注意:所有选中的节点都包含在列表中!) 🎅①nodename表示根据标签名字选取标签,注意只会选择子标签!比如:如果是儿子的儿子则选取不到。🍏②/表示从根节点选取 一级一级筛选(不能跳)🍒③// 表示从匹配选择的当前节点选择文档中的节点,而不考虑它们的位置。 注意:是所有符合条件的🍓④ .表示选取当前标签🍌⑤两个.表示选取当前标签的父节点🍠⑥@表示获取标签的属性值🎍上述常用规则测试代码(建议自己多敲多练多思考!):
🐱(2)谓语讲解:谓语: 🐹①选取所有拥有属性class的p标签:🐸②选取所有p标签,且拥有属性class同时值为story的标签:🚀③选取所有的p标签,且其中a标签的文本值大于889:🐻④选取属于class为story的p标签 子元素的第一个a元素:👑⑤选取属于class为story的p标签 子元素的最后一个a元素:🐮⑥选取属于class为story的p标签 子元素的倒数第二个a元素:🐒⑦选取最前面的两个属于class为story的p标签的子元素的a元素:??上述谓语讲解测试代码(建议自己多敲多练多思考!):
📌(3)获取文本:🐫①用text()获取某个节点下的文本:💊②用string()获取某个节点下所有的文本:🔆上述获取文本测试代码(建议自己多敲多练多思考!):
🏃(4)XPath通配符:??用处:选取未知节点。即XPath通配符可用来选取未知节点 🔮①*表示匹配任何元素节点:🐾②@* 匹配任何属性节点:🌷上述XPath通配符测试代码(建议自己多敲多练多思考!):
🌻(5)使用|运算:选取多个路径 🍃①选取p元素的所有a和b元素:🍄②选取文档中的所有a和b元素:🐚上述使用|运算测试代码(建议自己多敲多练多思考!):
🌖(4)拓展——骚操作:🌜1.属性多值匹配(有些时候,有些节点的属性可能有多个值。)
??比如上述HTML文本中的div节点的class属性有两个值navli和navli-first,此时如果还想用之前的属性匹配获取,就无法匹配到了。上述代码的输出为[]。 ??两个解决方法: ????②使用contains()函数,不需要写入完整属性值,第一个参数传入属性名称,第二个参数传入属性值,只要此属性包含所传入的属性值,就可以完成匹配!如:print(html.xpath(’//div[contains(@class,“navli”)]//a/text()’)),这样输出也为:[‘时政’] 🌋2.多属性匹配:(有些时候,要根据多个属性确定一个节点,这时需要同时匹配多个属性,此时可以使用运算符and来连接!)
一些常用的运算符:(此表引用自w3school) 🌼3.节点轴选择:??①ancestor轴:
🎒②attribute轴:
💝③child轴:
💝④descendant轴:
??⑤following轴:
🔇⑥following-sibling轴:
🔓2.实战之豆瓣Top250电影信息爬取??经过本次实战实用XPath库,你会发现进行页面解析,提取你需要的数据是十分方便快捷的——这也是广大爬虫工程师的感受,所以XPath小伙伴们必须要掌握的牢牢的哦! 💣3.In The End!
?本博主会持续更新爬虫基础分栏及爬虫实战分栏,认真仔细看完本文的小伙伴们,可以点赞收藏并评论出你们的读后感。并可关注本博主,在今后的日子里阅读更多爬虫文!
? ??可通过点击下面——>添加私人VX号—>请标明来自CSDN,会拉你进入技术交流群(群内涉及各个领域大佬级人物,任何问题都可讨论~)—>互相学习&&共同进步(非诚勿扰): |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/15 17:49:27- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |