Python爬虫教程-30-Scrapy 爬虫框架介绍

从本篇开始学习 Scrapy 爬虫框架html

Python爬虫教程-30-Scrapy 爬虫框架介绍

  • 框架:框架就是对于相同的类似的部分,代码作到不出错,而咱们就能够将注意力放到咱们本身的部分了
  • 常见爬虫框架:
    • scrapy
    • pyspider
    • crawley
  • Scrapy 是一个为了爬取网站数据,提取结构性数据而编写的应用框架。 能够应用在包括数据挖掘,信息处理或存储历史数据等一系列的程序中
  • Scrapy 官方文档

Scrapy 的安装

  • 能够直接在 Pycharm 进行安装
    • 【PyCharm】>【file】>【settings】>【Project Interpreter】>【+】 >【scrapy】>【install】
    • 具体操做截图:
      这里写图片描述
  • 点击左下角 install 静静等待
    这里写图片描述

测试 Scrapy 是否安装成功

  • 进入当前所在的环境
  • 输入 scrapy 命令
  • 截图:
    这里写图片描述
  • 这里就说明安装成功l

Scrapy 概述

  • 包含各个部件
    • ScrapyEngine:神经中枢,大脑,核心
    • Scheduler 调度器:负责处理请求,引擎发来的 request 请求,调度器须要处理,而后交换引擎
    • Downloader 下载器:把引擎发来的 requests 发出请求,获得 response
    • Spider 爬虫:负责把下载器获得的网页/结果进行分解,分解成数据 + 连接
    • ItemPipeline 管道:详细处理 Item
    • DownloaderMiddleware 下载中间件:自定义下载的功能扩展组件
    • SpiderMiddleware 爬虫中间件:对 spider 进行功能扩展
  • 数据流图:
    这里写图片描述
  • 绿色箭头是数据的流向
  • 由 Spider 开始 Requests, Requests, Responses, Items

爬虫项目大体流程

  • 1.新建项目:scrapy startproject xxx项目名
  • 2.明确须要爬取的目标/产品:编写 item.py
  • 3.制做爬虫:地址 spider/xxspider.py 负责分解,提取下载的数据
  • 4.存储内容:pipelines.py

模块介绍

  • ItemPipeline
    • 对应 pipelines 文件
    • 爬虫提取出数据存入 item 后,item 中保存的数据须要进一步处理,好比清洗,去虫,存储等
    • Pipeline 须要处理 process_item 函数
    • process_item
      • spider 提取出来的 item 做为参数传入,同时传入的还有 spider
      • 此方法必须实现
      • 必须返回一个 Item 对象,被丢弃的 item 不会被以后的 pipeline
  • _ init _:构造函数
    • 进行一些必要的参数初始化
  • open_spider(spider):
    • spider 对象对开启的时候调用
  • close_spider(spider):
    • 当 spider 对象被关闭的时候调用
  • Spider
    • 对应的是文件夹 spider 下的文件
    • _ init _:初始化爬虫名称,start _urls 列表
    • start_requests:生成 Requests 对象交给 Scrapy 下载并返回 response
    • parse:根据返回的 response 解析出相应的 item,item 自动进入 pipeline:若是须要,解析 url,url自动交给 requests 模块,一直循环下去
    • start_requests:此方法尽能被调用一次,读取 start _urls 内容并启动循环过程
    • name:设置爬虫名称
    • start_urls:设置开始第一批爬取的 url
    • allow_domains:spider 容许去爬的域名列表
    • start_request(self):只被调用一次
    • parse:检测编码
    • log:日志记录

中间件(DownloaderMiddlewares)

  • 什么是中间件?
  • 中间件是处于引擎和下载器中间的一层组件,能够有多个
  • 参照上面的流程图,咱们把中间件理解成成一个通道,简单说,就是在请求/响应等传输的时候,在过程当中设一个检查哨,例如:
    • 1.身份的假装: UserAgent,咱们假装身份,不是在开始请求的时候就设置好,而是在请求的过程当中,设置中间件,当检测到发送请求的时候,拦下请求头,修改 UserAgent 值
    • 2.筛选响应数据:咱们最开始获得的数据,是整个页面,假设某个操做,须要咱们过滤掉全部图片,咱们就能够在响应的过程当中,设置一个中间件
    • 比较抽象,可能不是很好理解,可是过程是其实很简单的
  • 在 middlewares 文件中
  • 须要在 settings 中设置以是生效
  • 通常一个中间件完成一项功能
  • 必须实现如下一个或者多个方法
    • process_request (self, request, spider)
      • 在请求的过程当中被调用
      • 必须返回 None 或 Response 或 Request 或 raise IgnoreRequest
        • 若是返回 None:scrapy 将继续处理 request
        • 若是返回 Request:scrapy 会中止调用 process_request 并冲洗调度返回的 request
        • 若是返回 Response:scrapy 将不会调用其余的 process_request 或者 process _exception,直接将该 response 做为结果返回,同时会调用 process _response
    • process_response (self, request, spider)
    • 每次返回结果的时候自动调用
  • 下一篇连接:Python爬虫教程-31-建立 Scrapy 爬虫框架项目

更多文章连接:Python 爬虫随笔


  • 本笔记不容许任何我的和组织转载
相关文章
相关标签/搜索