Scrapy框架

Scrapy简介:

Scrapy是用纯python实现一个爬取网站数据、提取结构性数据而编写的应用框架,用途非常广泛。Scrapy使用了Twisted异步网络框架,可以加快我们的下载速度。

异步:调用在发出之后,这个调用就直接返回,不管有无结果

非阻塞:关注的是程序在等待结果时的状态,不能立刻得到结果之前,该调用不会阻塞当前线程

scrapy框架:

  • scrapy Engine(引擎):总指挥:负责数据和信号的在不同模块间的传递,scrapy已经实现
  • scheduler(调度器):一个队列,存放引擎发过来的request请求,scrapy已经实现
  • Downloader (下载器):下载把引擎发过来的requests请求,并返回给引擎,scrapy已经实现
  • Spider (爬虫):处理引擎发来来的response,提取数据,提取url,并交给引擎,需要手写
  • Item Pipeline(管道):处理引擎传过来的数据,比如存储,需要手写
  • Downloader Middlewares(下载中间件):可以自定义的下载扩展,比如设置代理,一般不用手写
  • Spider MiddlewaresSpider(中间件):可以自定义requests请求和进行response过滤,一般不用手写

创建Spider:

  1. 创建一个scrapy项目——scrapy startproject myspider
  2. 生成一个爬虫——scrapy genspider xxxx “xxxx.cn
  3. 提取数据——完善spider,使用xpath等方法
  4. 保存数据——pipeline中保存数据

定义多个pipeline,例如先处理数据再存储数据,例如不同的域名要进行不同的提取,但要注意process_item名称不能变,其形参(spider)可以通过spider.name == "itcast"进行判断操作。

# logging:不同等级的日志,保存到本地,
import logging
# 获取当前日志输出位置
logger = logging.getLogger(__name__)
# setting可以设置LOG_FILE = './log.log'保存到本地
logger.warning(item)

scrapy

  • settings中设置LOG_LEVEL=“WARNING”
  • settings中设置LOG_FILE=“./a.log”#设置日志保存的位置,设置会后终端不会显示日志内容
  • import logging,实例化logger的方式在任何文件中使用logger输出内容。

普通项目中

  • import logging
    #设置日志输出的样式,格式。
    logging.basicConfig(...)
    # 实例化logger=logging.getLogger(__name__) 在任何py文件中调用logger即可
    

  转载请注明: 恋し Scrapy框架

  目录