如何分析Python网络爬虫的四个选择器正则表达式、BS4、Xpath、CSS,相信很多没有经验的人都不知所措。因此,本文总结了出现问题的原因和解决方法,希望大家可以通过本文来解决这个问题。
今天,边肖将为大家总结这四个选择器,让大家对Python选择器有更深的理解和熟悉。
一、正则表达式
正则表达式为我们提供了获取数据的快捷方式。虽然这个正则表达式更容易适应未来的变化,但它很难构造,可读性也很差。爬JD.COM网时,正则表达式如下图所示:
正则表达式精确获取目标信息
此外,众所周知,网页经常会发生变化,这导致网页中的一些小的布局变化。这时候之前写的正则表达式就达不到要求,也不容易调试。当有大量内容需要匹配时,使用正则表达式提取目标信息会降低程序的运行速度,消耗更多内存。
第二,美丽的组合
BeautifulSoup是一个非常受欢迎的Pyhon模块。这个模块可以解析网页,并为定位内容提供一个方便的界面。该模块可通过“pip install beautifulsoup4”安装。
用靓汤提取目标信息。
使用美化组的第一步是将下载的HTML内容解析成一个汤文档。因为大部分网页都没有好的HTML格式,所以美化组需要确定实际的格式。美化程序可以正确解析缺少的引号并关闭标签。此外,它还会添加& ltHTML & gt和& lt>。标签,使其成为一个完整的HTML文档。我们通常使用find()和find_all()方法来定位我们需要的元素。如果你想了解美化组的所有方法和参数,可以查阅美化组的官方文档。虽然在理解代码方面,美化输出比正则表达式更复杂,但它更容易构造和理解。
Iii .Lxml
Lxml模块用C语言编写,解析速度比BeautiflSoup快,安装过程也比较复杂,这里就不赘述了。使用XPath表达式选择XML文档中的节点。按照路径或步骤选择节点。
Xpath
使用lxml模块的第一步,就像美化组一样,是将可能非法的HTML解析成统一的格式。Lxml可以正确解析属性两边缺少的引号并关闭标签,但是模块不会添加额外的& lthtml >。和& lt>。标签。
在线复制Xpath表达式可以轻松复制Xpath表达式。但是用这种方法得到的Xpath表达式不能在程序中使用,而且读起来太长。因此,Xpath表达式通常必须由您自己使用。
第四,CSS
CSS选择器代表用于选择元素的模式。美化程序集成了CSS选择器的语法和它自己方便的API。在网络爬虫的开发过程中,对于熟悉CSS选择器语法的人来说,使用CSS选择器是一种非常方便的方法。
CSS选择器
以下是一些常用选择器的例子。
选择所有标签:*
选择& lta >。标签:a
选择class="l in k "的所有元素:l in k
选择& lta >。class=“link”的标记:a.link
选择& lta >。id为“home”的标记:a home。
全选& ltspan >上。父元素为& lt的子标签a >。标签:跨度。
全选& ltspan >上。& lta >。标签:跨度。
全选& lta >。标题属性为“Home”的标签:a [title=Home]
动词(verb的缩写)性能比较
Lxml和正则表达式模块是用c语言编写的,而BeautifulSoup是用纯Python编写的。下表总结了每种抓取方法的优缺点。
需要注意的是。在lxml的内部实现中,CSS选择器实际上被转换成一个等效的Xpath选择器。
如果你的爬虫的瓶颈是下载网页而不是提取数据,那么使用较慢的方法(比如美化程序)就不是问题。如果只需要抓取少量数据,又想避免额外的依赖,那么正则表达式可能更合适。但是,一般来说,l xml是捕获数据的最佳选择,因为这种方法快速且健壮,而正则表达式和美化组只在某些特定的场景中有用。
看完以上内容,你掌握了如何分析Python网络爬虫的四个选择器正则表达式、BS4、Xpath、CSS了吗?如果您想学习更多技能或了解更多相关内容,请关注行业资讯频道,感谢您的阅读!
内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/133807.html