c爬虫抓取网页数据(Python选择器选择器的理解和熟悉Python的选择器)

优采云 发布时间: 2021-12-22 23:19

  c爬虫抓取网页数据(Python选择器选择器的理解和熟悉Python的选择器)

  前几天,小编陆续写了四篇关于Python选择器的文章,使用正则表达式、BeautifulSoup、Xpath、CSS选择器在京东上抓取商品信息。今天就为大家总结一下这四种选择器,让大家对Python选择器有更深入的了解和熟悉。

  一、正则表达式

  正则表达式为我们提供了一种快速获取数据的方法。这种正则表达式虽然更容易适应未来的变化,但存在构建困难、可读性差的问题。爬京东时,正则表达式如下图所示:

  

  使用正则表达式实现目标信息的准确性采集

  另外,我们都知道网页经常会发生变化,从而导致网页中的一些细微的布局变化。这时候之前写的正则表达式已经不能满足需要了,也不容易调试。当需要匹配的内容很多时,使用正则表达式提取目标信息会降低程序运行速度,消耗更多内存。

  二、美汤

  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 文档中的节点。通过遵循路径或步骤来选择节点。

  

  路径

  使用lxml模块的第一步和BeautifulSoup一样,都是将潜在的非法HTML解析成统一的格式。虽然Lxml可以正确解析属性两边缺失的引号并关闭标签,但是模块并没有添加额外的<html>和<body>标签。

  在线复制 Xpath 表达式可以轻松复制 Xpath 表达式。但是这种方法得到的Xpath表达式在程序中一般是不能用的,看的太长了。因此,Xpath 表达式一般要自己使用。

  四、CSS

  CSS 选择器表示用于选择元素的模式。BeautifulSoup 集成了 CSS 选择器的语法和它自己方便的 API。在网络爬虫的开发过程中,对于熟悉CSS选择器语法的人来说,使用CSS选择器是一种非常方便的方法。

  

  CSS 选择器

  以下是一些常用选择器的示例。

  五、性能对比

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

  

  注意到这一点相对困难。在其内部实现中,lxml 实际上将 CSS 选择器转换为等效的 Xpath 选择器。

  六、总结

  如果你的爬虫的瓶颈是下载网页,而不是提取数据,那么较慢的方法(比如 BeautifulSoup)不是问题。如果你只需要抓取少量数据,又想避免额外的依赖,那么正则表达式可能更合适。但是,一般情况下,l xml 是捕获数据的最佳选择,因为这种方法快速且健壮,而正则表达式和 BeautifulSoup 仅在某些场景下有用。

  

  如果想深入了解Python网络爬虫和数据挖掘,可以到专业网站:

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线