【python爬虫学习笔记】08 Scrapy爬虫框架结构及常用命令

Scrapy爬虫的5+2结构

在这里插入图片描述

  • Engine 不需要用户修改
    控制所有模块之间的数据流
    根据条件触发事件
  • Downloader 不需要用户修改
    根据请求下载网页
  • Scheduler 不需要用户修改
    对所有爬取请求进行调度管理
  • Downloader Middleware 用户可以编写配置代码
    目的:实施Engine、Scheduler和Downloader之间进行用户可配置的控制
    功能:修改、丢弃、新增请求或响应
  • Spider 需要用户编写配置代码
    解析Downloader返回的响应(Response)
    产生爬取项(scrapy item)
    产生额外的爬取请求(Request)
  • Item PipeLines 需要用户编写配置代码
    以流水线方式处理Spider产生的爬取项
    由一组操作顺序组成,类似流水线,每个操作是一个Item PipeLine类型
    可能的操作包括:清理、检验和查重爬取项中的HTML数据、将数据存储到数据库
  • Spider Middleware 用户可以编写配置代码
    目的:对请求和爬取项的再处理
    功能:修改、丢弃、新增请求或爬取项

Requests vs. Scrapy

  • 相同点:
    两者都可以进行页面请求和爬取,Python爬虫的两个重要技术路线
    两者可用性都好,文档丰富,入门简单
    两者都没有处理js、提交表单、应对验证码等功能(可扩展)

  • 不同点:
    在这里插入图片描述

  • 如何选择:
    非常小的需求:requests库
    不太小的需求:Scrapy框架
    定制程度很高的需求(不考虑规模),自搭框架:requests>Scrapy

Scrapy爬虫的产生步骤

步骤一:建立一个Scrapy爬虫工程

命令行输入:

scrapy startproject python123demo

生成的工程目录:

  • python123demo/ —>外层目录

  • scrapy.cfg —>部署Scrapy爬虫的配置文件

  • python123demo/ —>Scrapy框架的用户自定义Python代码

  • init.py —>初始化脚本

  • items.py —>Items代码模板(继承类)

    扫描二维码关注公众号,回复: 5827349 查看本文章
  • middlewares.py —>Middlewares代码模板(继承类)

  • pipelines.py —>Pipelines代码模板(继承类)

  • settings.py —>Scrapy爬虫的配置文件
    在这里插入图片描述

  • spiders/ —>Spiders代码模板目录(继承类)

  • init.py —>初始文件,无需修改

  • pycache/ —>缓存目录,无需修改

步骤二:在工程中产生一个Scrapy爬虫

命令行:

scrapy genspider demo python123.io

新增的demo.py

import scrapy


class DemoSpider(scrapy.Spider):
    name = 'demo'
    allowed_domains = ['python123.io']
    start_urls = ['http://python123.io/']

    def parse(self, response):
        pass

parse()用于处理响应,解析内容形成字典,发现新的URL爬取请求

步骤三:配置产生的Spider爬虫

import scrapy


class DemoSpider(scrapy.Spider):
    name = 'demo'
    #allowed_domains = ['python123.io']
    start_urls = ['http://python123.io/ws/demo.html']

    def parse(self, response):
        fname = response.url.split('/')[-1]
        with open(fname,'wb') as f:
            f.write(response.body)
        self.log('Saved file %s.' % name)
        pass

步骤四:运行爬虫,获取网页

命令行:

scrapy crawl demo

附:Scrapy的常用命令

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_42864175/article/details/85008783