学会运用爬虫框架 Scrapy

Posted 极客猴

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了学会运用爬虫框架 Scrapy 相关的知识,希望对你有一定的参考价值。

学会运用爬虫框架 Scrapy (二)

上篇文章介绍了爬虫框架 Scrapy 如何安装,以及其特性、架构、数据流程。相信大家已经对 Scrapy 有人了初步的认识。本文是 Scrapy 系列文章的第二篇,主要通过一个实例讲解 scrapy 的用法。

1 选取目标

学会运用爬虫框架 Scrapy (二)

2 定义 Item

为什么将爬取信息定义清楚呢?因为接下来 Item 需要用到。在 Item.py 文件中,我们以类的形式以及 Field 对象来声明。其中 Field 对象其实是一个字典类型,用于保存爬取到的数据。而定义出来的字段,可以简单理解为数据库表中的字段,但是它没有数据类型。Item 则复制了标准的 dict API,存放以及读取跟字典没有差别。

V电影的 Item,我们可以这样定义:

学会运用爬虫框架 Scrapy (二)

3 编写 Spider

Spider 目录是我们爬虫程序爬取网站以及提取信息的模块。我们首先在目录下新建一个名为 VmoiveSpider 的文件。同时,该类继承scrapy.Spider

这里我们用到的scrapy.spider.Spider 是 Scrapy 中最简单的内置 spider。继承 spider 的类需要定义父类中的属性以及实现重要的方法。

  • name

这个属性是非常重要的,所以必须定义它。定义 name 目的是为爬虫程序命名。因此,还要保持 name 属性是唯一的。它是 String 类型,我们在 VmoiveSpider 可以定义:

学会运用爬虫框架 Scrapy (二)

  • start_urls

  • allowed_domains

学会运用爬虫框架 Scrapy (二)

  • parse(response)

parser 方法是Scrapy处理下载的response的默认方法。它同样必须被实现。parse 主要负责处理 response 并返回处理的数据以及跟进的URL。该方法及其他的Request回调函数必须返回一个包含 Request 及(或) Item 的可迭代的对象。

在 scrapy_demo/sipders/VmoiveSpider 的完整代码如下:

学会运用爬虫框架 Scrapy (二)

4 运行程序

在项目目录下打开终端,并执行以下命令。我们没有pipelines.py中将爬取结果进行存储,所以我们使用 scrapy 提供的导出数据命令,将 15 条电影信息导出到名为 items.json 文件中。其中 vmoive 为刚才在 VmoiveSpider 中定义的 name 属性的值。

学会运用爬虫框架 Scrapy (二)

运行的部分结果如下:

学会运用爬虫框架 Scrapy (二)

5 深究

在阅读上述代码过程中,大家可能会有两个疑问。第一,为什么要在 xpath 方法后面添加[0]? 第二,为什么要在 [0] 后面添加 extract()方法 ? 请听我慢慢道来。

1) 添加个[0], 因为 xpath() 返回的结果是列表类型。我以获取标题内容为例子讲解不添加[0]会出现什么问题。那么代码则变为

学会运用爬虫框架 Scrapy (二)

运行结果会返回一个列表,而不是文本信息。

学会运用爬虫框架 Scrapy (二)

2)这里涉及到内建选择器 Selecter 的知识。extract()方法的作用是串行化并将匹配到的节点返回一个unicode字符串列表。看了定义,是不是更加懵逼了。那就看下运行结果来压压惊。
不加上 extract() 的运行结果如下:

学会运用爬虫框架 Scrapy (二)

6 进阶

因此,代码可以这么改进:

学会运用爬虫框架 Scrapy (二)

学会运用爬虫框架 Scrapy (二)

再次运行程序,查看运行结果。

学会运用爬虫框架 Scrapy (二)

7 数据持久化

在实际生产中,我们很少把数据导出到 json 文件中。因为后期维护、数据查询、数据修改都是一件麻烦的事情。我们通常是将数据保存到数据库中。

我们先定义并创建数据库表

学会运用爬虫框架 Scrapy (二)

在 settings 文件中增加数据库的配置

学会运用爬虫框架 Scrapy (二)

在 scrapy 中,我们要在 pipeline 文件中编写处理数据存储的代码。

学会运用爬虫框架 Scrapy (二)


推荐:

上文:

 - END -

学会运用爬虫框架 Scrapy (二)
极客猴


长按指纹 > 识别图中二维码 > 添加关注

以上是关于学会运用爬虫框架 Scrapy 的主要内容,如果未能解决你的问题,请参考以下文章

scrapy按顺序启动多个爬虫代码片段(python3)

scrapy主动退出爬虫的代码片段(python3)

教你分分钟学会用python爬虫框架Scrapy爬取心目中的女神

教你分分钟学会用python爬虫框架Scrapy爬取心目中的女神

转载教你分分钟学会用python爬虫框架Scrapy爬取心目中的女神

教你分分钟学会用 python 爬虫框架 Scrapy 爬取心目中的女神