zoukankan      html  css  js  c++  java
  • scrapy 爬虫框架(一)

    一 . scrapy 的安装

    安装scrapy框架时,需要先安装依赖包。

    #Linux:
    
          pip3 install scrapy
    
      #Windows:
    
          a. pip3 install wheel
    
          b. 下载twisted http://www.lfd.uci.edu/~gohlke/pythonlibs/#twisted
    
          c. 进入下载目录,执行 pip3 install Twisted‑17.1.0‑cp35‑cp35m‑win_amd64.whl
    
          d. pip3 install pywin32
    
          e. pip3 install scrapy

    二.简介

    文档:https://scrapy-chs.readthedocs.io/zh_CN/latest/topics/firefox.html

    1.Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架。

    2.集成了各种功能(高性能异步下载,队列,分布式,解析,持久化等)的具有很强通用性的项目模板。

    3.Scrapy一个开源和协作的框架,Scrapy的用途十分广泛,可用于如数据挖掘、监测和自动化测试等领域。

    4.可应用在获取API所返回的数据(例如 Amazon Associates Web Services ) 或者通用的网络爬虫。

    5.Scrapy 是基于twisted框架开发而来,twisted是一个流行的事件驱动的python网络框架。

     因此Scrapy使用了一种非阻塞(又名异步)的代码来实现并发。

    整体架构大致如下:

    Scrapy主要包括了以下组件:

    • 引擎(Scrapy)
      用来处理整个系统的数据流处理, 触发事务(框架核心)。
    • 调度器(Scheduler)
      用来接受引擎发过来的请求, 压入队列中, 并在引擎再次请求的时候返回.可以想像成一个URL(抓取网页的网址或者说是链接)的优先队列, 由它来决定下一个要抓取的网址是什么, 同时去除重复的网址
    • 下载器(Downloader)
      用于下载网页内容, 并将网页内容返回给蜘蛛(Scrapy下载器是建立在twisted这个高效的异步模型上的)
    • 爬虫(Spiders)
      爬虫是主要干活的, 用于从特定的网页中提取自己需要的信息, 即所谓的实体(Item)。用户也可以从中提取出链接,让Scrapy继续抓取下一个页面
    • 项目管道(Pipeline)
      负责处理爬虫从网页中抽取的实体,主要的功能是持久化实体、验证实体的有效性、清除不需要的信息。当页面被爬虫解析后,将被发送到项目管道,并经过几个特定的次序处理数据。
    • 下载器中间件(Downloader Middlewares)
      位于Scrapy引擎和下载器之间的框架,主要是处理Scrapy引擎与下载器之间的请求及响应。
    • 爬虫中间件(Spider Middlewares)
      介于Scrapy引擎和爬虫之间的框架,主要工作是处理蜘蛛的响应输入和请求输出。
    • 调度中间件(Scheduler Middewares)
      介于Scrapy引擎和调度之间的中间件,从Scrapy引擎发送到调度的请求和响应。

    Scrapy运行流程大概如下:

      1. 引擎从调度器中取出一个链接(URL)用于接下来的抓取
      2. 引擎把URL封装成一个请求(Request)传给下载器
      3. 下载器把资源下载下来,并封装成应答包(Response)
      4. 爬虫解析Response
      5. 解析出实体(Item),则交给实体管道进行进一步的处理
      6. 解析出的是链接(URL),则把URL交给调度器等待抓取

    二.创建爬虫项目  


    1. 进入项目文件: 该爬虫项目存放的位置
    1.创建项目命令: scrapy startproject 项目名
    D:study爬虫day7 > scrapy startproject XiaoHua

    2.创建爬虫
    1.先 cd 项目目录下
    D:study爬虫day7 > cd XiaoHua
    2.再 执行: scrapy genspider 爬虫名 爬虫网站
    D:study爬虫day7XiaoHua > scrapy genspider xiahua xiaohuar.com







  • 相关阅读:
    接口
    java基础
    java的反射
    按照字典序打印所有的字符串
    求幂的问题
    时间复杂度与空间复杂度
    孩子们的游戏(圆圈中最后剩下的数)
    约瑟夫环问题
    翻转单词顺序列
    复杂链表的复制
  • 原文地址:https://www.cnblogs.com/knighterrant/p/10507969.html
Copyright © 2011-2022 走看看