08 - Scrapy框架详解

目录

1. Scrapy基本结构
  • Scrapy工作流程
  • Scrapy框架构成
2. Scrapy框架使用技巧
  • logging日志模块

  • scrapy.Request()应用

  • Scrapy CrawlSpider引入


课堂笔记

1. Scrapy基本结构
1.1 Scrapy工作流程
  • Scrapy框架,是为了更方便快捷提取数据而编写的应用框架,只需要自己编写少量代码就可以数据爬取。Scrapy采用Twisted异步网络框架,提升了爬取速度。

  • Scrapy基本工作流程

在这里插入图片描述

1.2 Scrapy框架构成

在这里插入图片描述

  • 框架基本构成

    • 引擎(Scrapy engine):负责Scrapy中各模块间数据与信号的交互,已经实现。
    • 调度器(Scheduler):一个队列,用于存放引擎发送的requests请求,以经实现。
    • 下载器(Downloader):对requests请求进行下载,并返回给引擎,已经实现。
    • 爬虫(Spiders):处理引擎发送的response,并提取url和数据,需要实现。
    • 管道(Item Pipeline):接收和处理Spiders传递的数据,需要实现。
      • Pipeline由于实现功能不同,可以存在多个。
      • Pipeline的权重越小优先级越高。
      • Pipeline中process_item方法名不能修改为其他的名称。
    • 下载中间件(Downloader Middlewares):可以自定义的下载扩展,比如设置代理,一般无需自己实现。
    • 爬虫中间件(Spider Middlewares):可以自定义requests请求和进行response过滤,一般无需自己实现。
  • 小试牛刀

    # 创建一个scrapy项目
    scrapy startproject projectName
    
    # 生成一个spider
    scrapy genspider spiderName 'xxx.com'
    
    # 实现spider,使用xpath等方法提取数据
    
    # 获取spider中数据,在pipeline中进行处理
    
    # 命令行执行爬虫
    scrapy crawl projectName
    
    # Pycharm中运行爬虫
    from scrapy import cmdline
    cmdline.execute('scrapy crawl projectName'.split())
    # cmdline.execute(['scrapy', 'crawl', 'projectName'])
    
2. Scrapy框架使用技巧
2.1 logging日志模块
  • logging模块,主要解决爬虫运行中可能会出现某一些请求数据错误的情况而导致获取数据失败,主动将错误信息保存到指定的文档中,便于详情查看,更清晰的获得错误信息。

  • 直接使用logging模块 在每一个部分都进行logging记录

    • 在setting.py中指定日志文档 LOG_FILE = ‘./log.log’
    • pipeline.py文档
    import scrapy, logging
    from scrapy.http.response.html import HtmlResponse
    from scrapy.selector.unified import SelectorList
    
    
    class BdimgSpider(scrapy.Spider):
        name = 'bdImg'
        allowed_domains = ['image.baidu.com']
        start_urls = ['http://image.baidu.com/']
        # 根据指定的名称创建logger
        logger = logging.getLogger(__name__)
    
        def parse(self
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值