scrapy 爬虫框架

爬虫基础

scrapy 爬虫框架

  • 框架-
  • 爬虫框架
    • scrapy
    • pyspider
    • crawley

一、scrapy框架介绍

1、概述

  • 1、包含各个部件
    • ScrapyEngine:神经中枢,大脑
    • Scheduler:调度器,引擎发来的request请求,调度器需要处理,然后交换引擎
    • Downloader:下载器,把引擎发来的request发出请求,得到response
    • Spider:爬虫,负责把下载器得到的网页/结果进行分解,分解成数据+连接
    • ItemPipeline:管道,详细处理Item
    • DownloaderMiddleware:下载中间件,自定义下载的功能扩展组件
    • SpiderMiddleware:爬虫中间件,,对Spider进行功能扩展
  • 2、各模块的作用
    • ItemPipeline:
      • 爬虫提取出数据存入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:初始化爬虫的名称,star_urls列表
      • start_requests:生成Requests对象交给Scrapy下载并返回response
      • parse:根据返回的response解析出相应的item,item自动进入pipeline,如果需要,解析出url,url自动交给requests模块,一直循环下去
      • start_request:此方法仅能被调用一次,读取star_urls内容并启动循环过程
      • name:设置爬虫名称
      • start_urls:设置开始第一批爬去的url
      • allow_domains:spider允许爬去的域名列表 -
      • log:日志记录
    • 爬虫项目大概流程
      1、新建项目:spider startproject xxx
      2、明确需要目标/产出:编写item.py
      3、制作爬虫:地址 spider/xxspider.py
      4、存储内容:pipelines.py

2、中间件(DownloaderMiddlewares)

  • 中间件是处于引擎和下载器中间的一层组件
  • 可以有很多个,被按照顺序加载执行
  • 作用是对发出的请求和返回的结果进行预处理
  • 在middlewares中
  • 需要在settings中设置加以生效
  • 一般一个中间件只完成一个任务
  • 必须实现以下一个或者多个方法
    • process_request(self,request,spider)
      在request通过的时候被调用
      必须返回None或Response或Request或raise IgreRequest
      None:scrapy继续处理该request
      Request:scrapy会停止调用process_request并冲洗调度返回的request
      Response:scrapy不会调用其他的process_request或process_exception,直接将该response作为结果处理,同时会调用process_response函数
    • process_response(self,request,response,spider)
      跟process_request大同小异
      每次返回结果的时候会自动调用
      可以有多个,按顺序调用

3、去重

  • 为了防止爬虫陷入死循环,需要去重
  • 即在spider中的parse函数中,返回Request的时候加上dont_filter=False

4、如何在scrapy中使用selenium

  • 可以放在中间件中的process_request函数中- 在函数调用selenium,完成爬去后返回Response

5、scrapy shell

  • 网址:https://segmentfault.com/a/1190000013199636?utm_source=tag-newest
  • shell
  • 启动
    • windows:scrapy shell “urlxxxxxx”
    • 启动后自动下载指定的url的网页
    • 下载后,url的内容保存在response的变量中,如果需要,我们可以调用response
    • response
      • 爬去到的内容保存在response中
      • response.body:是网页的页码
      • response.headers:是返回的HTTP的头信息
      • response.xpath:允许使用Xpath语法选择内容
      • response.css:允许使用css语法选择内容
    • selectro
      • 选择器:允许用户使用选择器选择自己想要内容
      • response.selector.xpath:response.xpath是其的缩写
      • response.selector.css:response.css是其的缩写
      • selector.re:允许用户提供正则选择内容

6、分布式爬虫

  • 单机爬虫的问题:
    • 单机效率
    • IO吞吐量
  • 多爬虫问题:
    • 数据共享
    • 分布式
  • 需要做:
    • 共享队列
    • 去重
  • Redis数据库
    • 内存数据库
    • 同时可以落地保存到硬盘
    • 可以去重
    • 可以把它理解成一个dict,set,list的集合体
    • 可以对保存的数据进行生命周期的设置
  • 内容保存数据库
    • MongoDB
    • MySQL等
  • 安装scrapy_redis
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值