zoukankan      html  css  js  c++  java
  • Python网咯爬虫 — Scrapy框架应用

    Scrapy框架

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

    Scrapy运行流程

    Scrapy运行流程大概如下:

          1引擎从调度器中取出一个链接(URL)用于接下来的抓取;

          2引擎把URL封装成一个请求(Request)传给下载器;

          3下载器把资源下载下来,并封装成应答包(Response);

          4爬虫解析Response;

          5解析出实体(Item),则交给实体管道进行进一步的处理;

          6)解析出的是链接(URL),则把URL交给调度器等待抓取。

     

    Scrapy的安装

          首先在cmd命令行中安装Scrapy

    pip install scrapy
          在Windows安装是可能会出现错误,提示找不到Microsoft Visual C++,需要安装Twisted 。
    error: Microsoft Visual C++ 14.0 is required. Get it with "Microsoft Visual C++ Build Tools": http://landinghub.visualstudio.com/visual-cpp-build-tools

      在下载Twisted之前,先要确认你Python的版本,比如我的版本为Python3.6.5,就选择cp36的;电脑
      系统是64位,就选择win amd64的。

             Twisted的安装:

    pip install E:DownloadsTwisted-18.4.0-cp36-cp36m-win_amd64.whl

          最后再安装Scrapy。

    Scrapy常用命令

    Scarpy常用命令
    命令 说明 格式
    startproject 创建一个新工程 Scrapy startproject 项目名
    genspider 创建一个爬虫 Scrapy genspider 项目名 域名
    settings 获取爬虫配置信息 Scrapy settings 
    crawl 运行一个爬虫 Scrapy crawl 项目名
    list 列出工程所有爬虫 Scrapy list
    shell 启动URL调试命令行 Scrapy shell [url]
    edit 编辑爬虫文件 Scrapy edit 文件名
    注意:一般创建爬虫文件时,以网站域名命名

    项目创建

    项目创建步骤:

           步骤1:建立一个Scrapy爬虫工程
                 选取一个目录(E:PyCodes),然后执行如下命令:
    E:PyCodesscrapy startproject myproject
          步骤2:在工程中产生一个Scrapy爬虫
                 进入工程目录(E:PyCodesmyproject),然后执行如下命令:
    E:PyCodesmyprojectscrapy genspider mydome mydome.com

          步骤3:配置产生的spider爬虫

                (1)初始URL地址
                (2)获取页面后的解析方式
    # -*- coding:utf-8 -*-
    import scrapy
    
    class MydemoSpider(scrapy.Spider):
        name = "mydemo"
        allowd_domains = ["http://mydome.com"]
        start_url = ['http://python123.io/ws/dome.html']
        
        def parse(self, response):
            pass
          步骤4:运行爬虫,获取网页
                 mydemo爬虫被执行,捕获页面存储在mydemo.html
                 在命令行下,执行如下命令:
    E:PyCodesmyprojectscrapy crawl mydome

    生成的项目结构:

    myproject/                 -------外层目录
        scrapy.cfg             -------项目的配置文件
        myproject/             -------该项目的python模块。之后您将在此加入代码。
            __init__.py        -------初始化脚本
            items.py           -------item代码模块(继承类)
            middlewares.py     -------Middlewares代码模板(继承类)
            pipelines.py       -------Pipelines代码模板(继承类)
            settings.py        -------Scrapy爬虫的配置文件
            
            spiders/           -------Spiders代码模板目录(继承类)
                __init__.py    -------初始文件,无需修改
                __init__.py    -------缓存目录,无需修改
  • 相关阅读:
    【转】NSArray,NSSet,NSDictionary总结
    dequeueReusableCellWithIdentifier
    可任意自定义的UITableViewCell
    contentSize、contentInset和contentOffset区别
    Cocoa的MVC架构分析 delegate
    WP7 Toolkit ExpanderView 控件 介绍 02
    ObjectiveC中一种消息处理方法performSelector: withObject:
    [转]HTML5多点触摸演示源码(Canvas绘制演示)
    Matlab 积分图的快速计算
    测试
  • 原文地址:https://www.cnblogs.com/lsqin/p/9342939.html
Copyright © 2011-2022 走看看