爬虫课程(六)|Scrapy安装以及目录结构介绍
一、Scrapy安装
如果顺利的话,直接使用下面的命令即可安装。
方法1:使用pip安装:pip install Scrapy。
方法2(推荐):使用国内豆瓣源进行安装,非常快:pip install -i https://pypi.douban.com/simple/ scrapy
二、Scrapy目录结构介绍
接下来以爬取某人的知乎回答内容为例来讲述Scrapy各目录的作用。
2.1、创建项目
在开始爬取之前,我们必须创建一个新的Scrapy项目。 进入我们打算存储代码的目录中,运行下列命令:
scrapy startproject tutorial
该命令将会创建包含下列内容的tutorial目录:
Scrapy目录结构这些文件分别是:
1)scrapy.cfg: 项目的配置文件,现在可以先忽略。
2)tutorial/: 该项目的python模块。
3)tutorial/items.py: 项目中的item文件。
Item 是保存爬取到的数据的容器;其使用方法和python字典类似, 并且提供了额外保护机制来避免拼写错误导致的未定义字段错误。
类似在ORM中做的一样,可以通过创建一个 scrapy.Item 类, 并且定义类型为 scrapy.Field 的类属性来定义一个Item。
首先根据需要从https://www.zhihu.com/people/huangxiaoguai/answers(我的知乎回答url)获取到的数据对item进行建模。我们需要从知乎回答中获取回答内容,回答的时间,回答被点赞数。 对此,在item中定义相应的字段。编辑 tutorial 目录中的 items.py 文件:
知乎回答item4)tutorial/pipelines.py: 项目中的pipelines文件。
Scrapy提供了pipeline模块来执行保存数据的操作。在创建的 Scrapy 项目中自动创建了一个 pipeline.py 文件,同时创建了一个默认的 Pipeline 类。比如我们要把item提取的数据保存到mysql数据库,可以如下编写:
利用pipelines保存数据5)tutorial/settings.py: 项目的设置文件。
settings.py是Scrapy中比较重要的配置文件,里面可以设置的内容非常之多。比如我们在前面提到的在pipelines.py中编写了把数据保存到mysql数据的class,那么怎么样才能使得这个class执行呢?就可以在settings设置,如下:
项目的设置文件settings6)tutorial/spiders/: 放置spider代码的目录。
这个很好理解,如下图,我们后面的示例,爬取豆瓣、微博、知乎的爬虫代码文件都存放在这个文件夹下的。
spider代码7)tutorial/middlewares.py:中间件,这块在很后面才会用到,先不介绍。
现在如果对上面各个结构理解的不是很清楚没关系,在后面的文章中我会通过爬取知乎回答、微博、豆瓣读书三个示例详细讲解Scrapy各个目录结构的作用以及它们是如何配合完成从打开一个网站到把我们需要的数据保存到数据库的。