Scrapy框架

Scrapy框架结构及各模块功能

框架结构

这里写图片描述

模块功能

  • Scrapy Engine(引擎):
    • 处理整个系统各个模块间信号
  • Spiders(爬虫类):
    • 发起起始的请求,返回request给Scheduler
    • 定义如何爬取一个网站,获取数据
  • Scheduler(调度器):
    • 接收引擎发过来的request请求,压入队列
    • 引擎需要时,取出request请求,返回给引擎
  • Downloader(下载器):
    • 接收请求,返回响应
  • ItemPipeline(管道):
    • 数据后续处理,处理Spiders返回的item.

Scrapy框架爬虫开发流程

流程:

  • 分析目标站点,测试反爬
  • 创建项目:scrapy startproject <项目名>
  • 明确目标
  • 创建爬虫:scrapy genspider <爬虫名> <域名>
  • 保存

创建项目

  • scrapy startproject <项目名>
  • 目录说明:
    • myspider:存放项目代码
    • items.py : 建模
    • pipelines.py:决定数据后续处理
    • settings.py:项目设置文件
    • spiders:存放创建的爬虫文件
    • scrapy.cfg:远程部署配置文件

明确目标

  • 根据要获取的内容,在items.py文件中建模

创建爬虫

  • scrapy genspider name domain
    • name:唯一,不能和项目名重名
    • domain:爬虫允许域名,进行过滤

运行爬虫

  • scrapy crawl <爬虫名>

保存内容

  • 编写pipeines管道文件
    • process_item()函数:定义数据操作
      • 必须返回item实例,供后续管道使用
    • spider文件中以yeild方式将数据返回
    • open_spider和close_spider用于爬虫开始和结束做相关处理

Scrapy shell调试

  • 调试方法:
    • 代码里打印输出
    • scrapy shell
  • 启动:scrapy shell <目标网站>:url地址需含双引号
  • 查看响应
    • response.body:响应源码
    • response.headers:响应头
    • response.url:请求的url
    • response.status:状态码
  • 调试xpath、css
    • response.selector.xpath()
    • response.selector.css()
    • 可简写去掉selector:如:response.css()
  • 防止被绊
    • 加载用户头启动
      • scrapy shell -s USER_AGENT=‘Mozilla/5.0’
        fetch(url)
  • 用浏览器查看获取响应
    • view(response)

Scrapy Spider类

  • 实现功能
    • 发起起始请求
    • 解析响应
      • 定义爬取行为
      • 定义数据抽取行为
  • 重要源码
    • init:初始化name和start_urls
    • start_requests
      • for url in self.start_urls
      • 请求url,传给make_requests_from_url
      • 接收make_requests_from_url返回的request
    • make_requests_from_url
      • 将传入url做成请求
    • parse
      • 从下载器获取响应,解析响应,抽取数据
  • scrapy中xpath使用区别
    • 需要使用extract()方法将数据字符串化
      • 一般使用extract_first():若没有返回None
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值