编程地带

Scrapy

2018-11-05  本文已影响0人  MA木易YA

安装

Anaconda安装(Anaconda致力于包的管理和部署,之后会更新介绍)

conda install scrapy

pip安装(当你安装好相应依赖后,可以直接用pip进行安装)

pip install scrapy

使用

Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架。 可以应用在包括数据挖掘,信息处理或存储历史数据等一系列的程序中。
其最初是为了 页面抓取 (更确切来说, 网络抓取 )所设计的, 也可以应用在获取API所返回的数据(例如 Amazon Associates Web Services ) 或者通用的网络爬虫。

Scrapy架构图(绿线是数据流向):

image.png

scrapy简单流程:

  1. 制作 Scrapy 爬虫 一共需要4步:
  2. 新建项目 (scrapy startproject xxx):新建一个新的爬虫项目
  3. 明确目标 (编写items.py):明确你想要抓取的目标
  4. 制作爬虫 (spiders/xxspider.py):制作爬虫开始爬取网页
  5. 存储内容 (pipelines.py):设计管道存储爬取内容

项目创建

scrapy startproject tutorial

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


image.png

这些文件分别是:

定义Item

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


image.png

编写第一个爬虫

Spider是用户编写用于从单个网站(或者一些网站)爬取数据的类。
其包含了一个用于下载的初始URL,如何跟进网页中的链接以及如何分析页面中的内容, 提取生成 item 的方法。

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

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

import scrapy

class DmozSpider(scrapy.Spider):
    name = "dmoz"
    allowed_domains = ["dmoz.org"]
    start_urls = [
        "http://www.dmoz.org/Computers/Programming/Languages/Python/Books/",
        "http://www.dmoz.org/Computers/Programming/Languages/Python/Resources/"
    ]

    def parse(self, response):
        filename = response.url.split("/")[-2]
        with open(filename, 'wb') as f:
            f.write(response.body)

项目执行

scrapy crawl dmoz
crawl dmoz 启动用于爬取 dmoz.org 的spider,您将得到类似的输出:


image.png

查看包含 [dmoz] 的输出,可以看到输出的log中包含定义在 start_urls 的初始URL,并且与spider中是一一对应的。在log中可以看到其没有指向其他页面( (referer:None) )。

除此之外,更有趣的事情发生了。就像我们 parse 方法指定的那样,有两个包含url所对应的内容的文件被创建了: Book , Resources

Scrapy为Spider的 start_urls 属性中的每个URL创建了 scrapy.Request 对象,并将 parse 方法作为回调函数(callback)赋值给了Request。

Request对象经过调度,执行生成 scrapy.http.Response 对象并送回给spider parse() 方法。

有关scrapy中对item进行提取作用到的选择器会在之后进行介绍,这里只是简单介绍了scrapy的使用步骤

上一篇 下一篇

猜你喜欢

热点阅读