Python网络爬虫四大选择器(正则表达式、BS4、Xpath、CSS)总结

  • 时间:2018-09-04 21:51 作者:电脑编程 来源:电脑编程 阅读:247
  • 扫一扫,手机访问
摘要:前几天小编连续写了四篇关于Python选择器的文章,分别使用正则表达式、BeautifulSoup、Xpath、CSS选择器分别抓取京东网的商品信息。今天小编来给大家总结一下这四个选择器,让大家更加深刻的了解和熟习Python选择器。文章后面也给大家整理了Python很全面的资料和教程可以下载,适合

前几天小编连续写了四篇关于Python选择器的文章,分别使用正则表达式、BeautifulSoup、Xpath、CSS选择器分别抓取京东网的商品信息。今天小编来给大家总结一下这四个选择器,让大家更加深刻的了解和熟习Python选择器。

文章后面也给大家整理了Python很全面的资料和教程可以下载,适合正在学习Python的朋友。

一、正则表达式

正则表达式为我们提供了抓取数据的快捷方式。尽管该正则表达式更容易适应未来变化,但又存在难以构造、可读性差的问题。当在爬京东网的时候,正则表达式如下图所示:

Python网络爬虫四大选择器(正则表达式、BS4、Xpath、CSS)总结

利使用正则表达式实现对目标信息的精准采集

此外 ,我们都知道,网页时常会产生变更,导致网页中会发生少量微小的布局变化时,此时也会使得之前写好的正则表达式无法满足需求,而且还不太好调试。当需要匹配的内容有很多的时候,用正则表达式提取目标信息会导致程序运行的速度减慢,需要消耗更多内存。

二、BeautifulSoup

BeautifulSoup是一个非常流行的 Pyhon 板块。该板块可以解析网页,并提供定位内容的便捷接口。通过'pip install beautifulsoup4'即可以实现该板块的安装了。

Python网络爬虫四大选择器(正则表达式、BS4、Xpath、CSS)总结

利使用美丽的汤去提取目标信息

用 BeautifulSoup的第一步是将己下载的 HTML 内容解析为 soup文档。由 于大多 数网 页都不具有良好的HTML 格式,因而BeautifulSoup需要对实际格式进行确定。BeautifulSoup能够正确解析缺失的引号并闭合标签,此外还会增加<html >和<body>标签使其成为完整的HTML文档。通常用find() 和find_all()方法来定位我们需要的元素。假如你想理解BeautifulSoup一律方法和参数,可以查阅BeautifulSoup的官方文档。尽管BeautifulSoup在代码的了解上比正则表达式要复杂少量,但是其更加容易构造和了解。

三、Lxml

Lxml板块用 C语言编写,其解析速度比 BeautiflSoup更快,而且其安装过程也更为复杂,在此小编就不赘述啦。XPath 用路径表达式在 XML 文档中选取节点。节点是通过沿着路径或者者 step 来选取的。

Python网络爬虫四大选择器(正则表达式、BS4、Xpath、CSS)总结

Xpath

用 lxml 板块的第一步和BeautifulSoup一样,也是将有可能不合法的HTML 解析为 统一格式。 尽管Lxml可以正确解析属性两侧缺失的引号,并闭合标签,不过该板块没有额外增加<html >和<body>标签 。

在线复制Xpath表达式可以很方便的复制Xpath表达式。但是通过该方法得到的Xpath表达式放在程序中一般不能使用,而且长的没法看。所以Xpath表达式一般还是要自己亲身上手。

四、CSS

CSS选择器表示选择元素所用 的模式。BeautifulSoup整合了CSS选择器的语法和自身方便用API。在网络爬虫的开发过程中,对于熟习CSS选择器语法的人,用CSS选择器是个非常方便的方法。

Python网络爬虫四大选择器(正则表达式、BS4、Xpath、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 [title=Home]

五、性能比照

lxml 和正则表达式板块都是C语言编写的,而BeautifulSoup则是纯Python 编写的。下表总结了每种抓取方法的优缺点。

Python网络爬虫四大选择器(正则表达式、BS4、Xpath、CSS)总结

需要注意的是。lxml在内部实现中,实际上是将CSS选择器转换为等价的Xpath选择器。

六、总结

假如你的爬虫瓶颈是下载网页,而不是抽取数据的话,那么用较慢的方法(如BeautifulSoup) 也不成问题。假如只要抓取一些数据,并且想要避免额外依赖的话,那么正则表达式可能更加适合。不过,通常情况下,l xml是抓取数据的最好选择,这是由于该方法既快速又健壮,而正则表达式和BeautifulSoup只在某些特定场景下有使用。

最后呢,分享少量Python的资料和教程给大家,如下图,关注头条号之后私信回复“资料”就可下载了。

Python网络爬虫四大选择器(正则表达式、BS4、Xpath、CSS)总结

  • 全部评论(0)
最新发布的资讯信息
【系统环境|服务器应用】在CentOS 7上如何安装Gogs 0.11.53(2020-02-10 10:14)
【系统环境|】淘码库,据消息称已被调查。淘码库源码网,已经无法访问!(2020-01-14 04:13)
【系统环境|服务器应用】Discuz隐藏后台admin.php网址修改路径(2019-12-16 16:48)
【系统环境|服务器应用】2020新网站如何让百度快速收录网站首页最新方法,亲测有用!免费(2019-12-16 16:46)
【系统环境|服务器应用】Discuz发布帖子时默认显示第一个主题分类的修改方法(2019-12-09 00:13)
【系统环境|软件环境】Android | App内存优化 之 内存泄漏 要点概述 以及 处理实战(2019-12-04 14:27)
【系统环境|软件环境】MySQL InnoDB 事务(2019-12-04 14:26)
【系统环境|软件环境】vue-router(单页面应用控制中心)常见用法(2019-12-04 14:26)
【系统环境|软件环境】Linux中的Kill命令(2019-12-04 14:26)
【系统环境|软件环境】Linux 入门时必学60个文件解决命令(2019-12-04 14:26)
手机二维码手机访问领取大礼包
返回顶部