scrapy入门教程

我来说一下我创建第一个spider小demo的过程,以及过程中出现的问题,供大家参考,希望大家少走弯路!

我的是windows系统,在pycharm上编码的。下面是创建运行爬虫的步骤:

一、创建一个scrapy项目

进入打算存储代码的目录中,在控制台中输入以下命令:

scrapy startproject 项目名

例如:scrapy startproject tutorial

该命令将会创建包含下列内容的tutorial目录:

这些文件分别是:

  • scrapy.cfg : 项目的配置文件
  • tutorial/ : 该项目的python模块。
  • tutorial/items.py : 项目中的item文件。
  • tutorial/pipelines.py : 项目中的pipelines文件。
  • tutorial/settings.py : 项目的设置文件。
  • tutorial/spiders/ : 放置spider代码的目录。

二、定义Item

Item是保存爬取到的数据的容器;其使用方法和python字典类似, 并且提供了额外保护机制来避免拼写错误导致的未定义字段错误。

编辑 tutorial 目录中的 items.py 文件:

三、编写爬取网站的 spider 并提取 Item

Spider是用户编写用于从单个网站(或者一些网站)爬取数据的类。

其包含了一个用于下载的初始URL,如何跟进网页中的链接以及如何分析页面中的内容, 提取生成item的方法。

以下为我们的第一个Spider代码,保存在 tutorial/spiders 目录下的 dmoz_spider.py 文件中:

为了创建一个Spider,您必须继承 scrapy.Spider 类, 且定义以下三个属性:

    • name : 用于区别Spider。 该名字必须是唯一的,您不可以为不同的Spider设定相同的名字。
    • start_urls :包含了Spider在启动时进行爬取的url列表。 因此,第一个被获取到的页面将是其中之一。 后续的URL则从初始的URL获取到的数据中提取。
    • parse() :是spider的一个方法。 被调用时,每个初始URL完成下载后生成的Response对象将会作为唯一的参数传递给该函数。 该方法负责解析返回的数据(response data),提取数据(生成item)以及生成需要进一步处理的URL的Request对象。

 四、爬取

进入项目的根目录,执行下列命令启动spider:

scrapy crawl 爬虫名

例如:scrapy crawl dmoz      ----这一步很多人容易把爬虫名跟项目名搞混,爬虫名就是你自己定义的那个name

运行这一步很多人容易出错,

可能有以下3种解决办法:

1.看看你在命令行输入的scrapy crawl dmoz中爬虫名,是不是跟程序中name字段定义的一样,谨防拼错!

2.scrapy crawl dmoz 这个命令一定要在项目目录下运行,比如我的,就必须在跟scrapy.cfg同级那个tutorial目录下运行

3.再有就是看scrapy.cfg文件是否在项目目录下,一定放在项目目录下!

然后,你以为可以顺利运行了?我的又出现一个错误

解决办法:

pip install pypiwin32

安装过程还会出错!!!!

解决办法用:

步骤 (1):   pip --default-timeout=100 install -U pip

步骤 (2):   pip --default-timeout=100 install -U (这里加上你要下载的库的名字),如:

                        pip --default-timeout=100 install -U selenium

至此,再运行scrapy crawl dmoz就成功啦!

 

 

 

posted @ 2018-11-29 21:05  miya_zzz  阅读(228)  评论(0编辑  收藏  举报