爬虫scrapy框架详解

Scrapy是什么

​ Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架。 可以应用在包括数据挖掘,信息处理或存储历史数据等一系列的程序中。**

如何安装Scrapy

  • 正常安装

​ pip install scrapy 2.3.0 (在Window10环境下,可能会出现 gzip解码错误)

​ pip install scrapy 2.1.0 (建议安装版本)

  • win7安装错误解决方案

​ 如果安装有错误!!!!

​ pip install Scrapy

​ building ‘twisted.test.raiser’ extension

​ error: Microsoft Visual C++ 14.0 is required. Get it with “Microsoft Visual C++ Build Tools”: http://landinghub.visualstudio.com/visual-cpp-build-tools

​ 解决方案:

​ http://www.lfd.uci.edu/~gohlke/pythonlibs/#twisted

​ 下载twisted对应版本的whl文件(如我的Twisted-17.5.0-cp36-cp36m-win_amd64.whl),cp后面是python版本,amd64代表64位,运行命令:

​ pip install C:\Users…\Twisted-17.5.0-cp36-cp36m-win_amd64.whl

​ pip install Scrapy

Scrapy框架核心组件(框架组成)

  • engine 引擎
    • 负责其他四个组件的交互.
    • 自动运行,无需关注,会自动组织所有的请求对象,分发给下载器
  • spider 爬虫类
    • 启动爬虫的入口(发起起始的请求)/请求成功之后的数据解析/解析过程的产出item和request

    • scrapy.Spider 普通的爬虫类的父类

    • scrapy.CrawlSpider 可设置规则的爬虫类、Rule规则类

    • 开始函数 start_requests()

  • scheduler 调度器
    • 接收engine传入的请求,根据调度规则(考虑优先级), 产出一个request给engine.

    • 有自己的调度规则,无需关注

  • downloader 下载器
    • 从引擎处获取到请求对象后,请求数据

    • 接收engien从调度器获取的请求request, 并开始下载,下载成功之后,产出给engine

  • itempipeline 数据管道
    • 处理engien从爬虫类中接收到解析数据item, 并进行处理.

    • 清理HTML数据

    • 验证爬取的数据

    • 查重并将重复的数据丢弃

    • 将爬取结果保存到数据库中

    • 对图片数据进行下载

  • 中间件
    • 爬虫中间件
    • 下载中间件

工作原理

工作原理详情图

工作流程

  1. 爬虫引擎获得初始请求开始抓取
  2. 爬虫引擎开始请求调度程序,并准备对下一次的请求进行抓取
  3. 爬虫调度器返回下一个请求给爬虫引擎
  4. 爬虫引擎将数据发送给下载中间件的process_request()方法(注:setting中将DOWNLOADER_MIDDLEWARES打开的情况下)
  5. 下载中间件将处理后的请求发送到下载器,下载网络数据
  6. 下载器完成页面下载,将下载结果返回给下载中间件的process_response()方法 (注:setting中将DOWNLOADER_MIDDLEWARES打开的情况下)
  7. 下载中间件将处理后的数据返回给爬虫引擎
  8. 引擎将下载器的响应数据返回给爬虫中间件SPIDER_MIDDLEWARES处理数据(注:setting中SPIDER_MIDDLEWARES打开的情况下)
  9. 爬虫中间件将响应的数据返回给爬虫进行处理
  10. 爬虫类处理响应,将处理后的数据返回给爬虫中间件SPIDER_MIDDLEWARES处理数据(注:setting中SPIDER_MIDDLEWARES打开的情况下)
  11. 爬虫中间件返回处理后的items,以及新的请求给引擎
  12. 引擎发送处理后的items到项目管道,然后吧处理结果返回给调度器,调度器计划处理下一个请求抓取
  13. 重复该过程,直到爬取完所有的url请求

scrapy使用方法

scrapy常用命令

- scrapy startproject 项目名 --->创建项目
- scrapy genspider 爬虫名 域名  ---> 创建爬虫
- scrapy genspider -t crawl 爬虫名 域名  ---> 创建规则爬虫
- scrapy crawl 爬虫名 -o 文件名  ---> 导出文件
- scrapy crawl 爬虫名  ---> 启动爬虫
- scrapy shell [url]  ---> 终端执行

scrapy.response对象

response 是 scrapy.http.HtmlResponse类对象

包含的属性:
方法
- css()  ---> 通过HTML中css属性对数据解析
- xpath()  ---> 返回Selector对象,通过HTML标签路径对数据解析
- json()
- copy()

用于获取Selector对象的内容
- extract() ---> 返回list
- extract_first()  ---> 提前第一条内容

属性
- encoding  ---> 字符集,不能直接修改
- url  ---> 响应路径
- headers  ---> 响应头
- body  ---> 字节数据
- status  ---> 响应
- text  ---> 文本消息
- meta  ---> 接收到Request()中的meta属性向解析函数传递数据(元数据)
- request  ---> 响应请求

scrapy.Request()初始化的参数

- url  ---> 请求路径
- method  ---> 请求方法
- headers  ---> 请求头
- cookies  ---> 缓存
- body  ---> 请求体
- meta  ---> meta属性可以向下一个解析函数传递数据(元数据),是dict字典格式,value不能是一个引用对象
- dont_filter  ---> dont_filter为False表示过滤重复下载的请求,为True则不过滤
- priority  ---> 优先级
- callback  ---> 回调函数
- encoding  ---> 编码格式
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值