网站需求分析怎么写,石排网站设计,如何看网站做的好坏,宜昌网站seo收费前几天小编连续写了四篇关于Python选择器的文章#xff0c;分别用正则表达式、BeautifulSoup、Xpath、CSS选择器分别抓取京东网的商品信息。今天小编来给大家总结一下这四个选择器#xff0c;让大家更加深刻的理解和熟悉Python选择器。
一、正则表达式
正则表达式为我们提供了…前几天小编连续写了四篇关于Python选择器的文章分别用正则表达式、BeautifulSoup、Xpath、CSS选择器分别抓取京东网的商品信息。今天小编来给大家总结一下这四个选择器让大家更加深刻的理解和熟悉Python选择器。
一、正则表达式
正则表达式为我们提供了抓取数据的快捷方式。虽然该正则表达式更容易适应未来变化但又存在难以构造、可读性差的问题。当在爬京东网的时候正则表达式如下图所示利用正则表达式实现对目标信息的精准采集
此外 我们都知道网页时常会产生变更导致网页中会发生一些微小的布局变化时此时也会使得之前写好的正则表达式无法满足需求而且还不太好调试。当需要匹配的内容有很多的时候使用正则表达式提取目标信息会导致程序运行的速度减慢需要消耗更多内存。
二、BeautifulSoup
BeautifulSoup是一个非常流行的 Pyhon 模块。该模块可以解析网页并提供定位内容的便捷接口。通过pip install beautifulsoup4就可以实现该模块的安装了。利用美丽的汤去提取目标信息
使用 BeautifulSoup的第一步是将己下载的 HTML 内容解析为 soup文档。由 于大多 数网 页都不具备良好的HTML 格式因此BeautifulSoup需要对实际格式进行确定。BeautifulSoup能够正确解析缺失的引号并闭合标签此外还会添加html 和body标签使其成为完整的HTML文档。通常使用find() 和find_all()方法来定位我们需要的元素。如果你想了解BeautifulSoup全部方法和参数可以查阅BeautifulSoup的官方文档。虽然BeautifulSoup在代码的理解上比正则表达式要复杂一些但是其更加容易构造和理解。
三、Lxml
Lxml模块使用 C语言编写其解析速度比 BeautiflSoup更快而且其安装过程也更为复杂在此小编就不赘述啦。XPath 使用路径表达式在 XML 文档中选取节点。节点是通过沿着路径或者 step 来选取的。Xpath
使用 lxml 模块的第一步和BeautifulSoup一样也是将有可能不合法的HTML 解析为 统一格式。 虽然Lxml可以正确解析属性两侧缺失的引号并闭合标签不过该模块没有额外添加html 和body标签 。
在线复制Xpath表达式可以很方便的复制Xpath表达式。但是通过该方法得到的Xpath表达式放在程序中一般不能用而且长的没法看。所以Xpath表达式一般还是要自己亲自上手。
四、CSS
CSS选择器表示选择元素所使用 的模式。BeautifulSoup整合了CSS选择器的语法和自身方便使用API。在网络爬虫的开发过程中对于熟悉CSS选择器语法的人使用CSS选择器是个非常方便的方法。CSS选择器
下面是一些常用的选择器示例。
选择所有标签
选择a标 签 a
选择所有class”link” 的元素 .l in k
选择 class”link” 的a标签 a.link
选择 id home ” 的a标签 a Jhome
选择父元素为a标签的所有 span子标签 a span
选择a标签内部的所有span标签 a span
选择title属性为” Home ” 的所有a标签 a [titleHome]
五、性能对比
lxml 和正则表达式模块都是C语言编写的而BeautifulSoup则是纯Python 编写的。下表总结了每种抓取方法的优缺点。相对困难需要注意的是。lxml在内部实现中实际上是将CSS选择器转换为等价的Xpath选择器。
六、总结
如果你的爬虫瓶颈是下载网页而不是抽取数据的话那么使用较慢的方法如BeautifulSoup 也不成问题。如果只需抓取少量数据并且想要避免额外依赖的话那么正则表达式可能更加适合。不过通常情况下l xml是抓取数据的最好选择这是因为该方法既快速又健壮而正则表达式和BeautifulSoup只在某些特定场景下有用。
以上就是本文的全部内容希望对大家的学习有所帮助也希望大家多多支持我们。
本文标题: Python网络爬虫四大选择器用法原理总结
本文地址: http://www.cppcns.com/jiaoben/python/315063.html