zoukankan      html  css  js  c++  java
  • python爬虫之初始scrapy

    简介:

      Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架。 可以应用在包括数据挖掘,信息处理或存储历史数据等一系列的程序中。

      其最初是为了 页面抓取 (更确切来说, 网络抓取 )所设计的, 也可以应用在获取API所返回的数据(例如 Amazon Associates Web Services ) 或者通用的网络爬虫。

    创建项目:

    scrapy startproject scrapy_test
    

      

    编写Spider:

    #scrapy genspider 项目名  项目url
    scrapy genspider quotes quotes.toscrape.com
    

      

    执行爬虫:

    scrapy crawl quotes
    

      

    错误代码:

      UnicodeEncodeError: 'gbk' codec can't encode character 'u2764' in position 11162: illegal multibyte sequence

    解决办法:

    import io
    import sys
    sys.stdout = io.TextIOWrapper(sys.stdout.buffer,encoding='utf8')
    

      

    我们看看scrapy的爬虫流程图:

    基本的爬虫框架:

    scrapy_test/
        scrapy_test/
            spiders/
                 __init__.py
                 quotes.py
            __init__.py
            items.py
            middlewares.py
            pipelines.py
            settings.py
        scrapy.cfg
    

      

    Scrapy Engine: 这是引擎,负责Spiders、ItemPipeline、Downloader、Scheduler中间的通讯,信号、数据传递等等!

    Scheduler(调度器): 它负责接受引擎发送过来的requests请求,并按照一定的方式进行整理排列,入队、并等待Scrapy Engine(引擎)来请求时,交给引擎。

    Downloader(下载器):负责下载Scrapy Engine(引擎)发送的所有Requests请求,并将其获取到的Responses交还给Scrapy Engine(引擎),由引擎交给Spiders来处理,

    Spiders:它负责处理所有Responses,从中分析提取数据,获取Item字段需要的数据,并将需要跟进的URL提交给引擎,再次进入Scheduler(调度器),

    Item Pipeline:它负责处理Spiders中获取到的Item,并进行处理,比如去重,持久化存储(存数据库,写入文件,总之就是保存数据用的)

    Downloader Middlewares(下载中间件):你可以当作是一个可以自定义扩展下载功能的组件

    Spider Middlewares(Spider中间件):你可以理解为是一个可以自定扩展和操作引擎和Spiders中间‘通信‘的功能组件(比如进入Spiders的Responses;和从Spiders出去的Requests)

    调试方法:

      在scrapy中我们为了抽取一个网站的详细内容的时候,我们在对应spider里面可能写了很多的抽取代码,但是我们不能每次执行整个大项目调试,这个时候为了试某个抽取代码的时候,我们可以直接在终端键入如下命令,然后就可以从头到尾的调试自己的每一条抽取代码。

    #scrapy shell  网站地址
    scrapy shell http://quotes.toscrape.com/
    

     

    保存:

       保存为json文件

    scrapy crawl quotes -o quotes.json
    

      .json    #json文件(包在一个大列表里面的一个个字典形式)

      .jl         #一个一个 独立的字典形式

      .xml     #xml文件

      .csv     #csv文件

      .pickle #pickle文件

      .fpt       #ftp://user:password@ftp.server.com/path/quotes.cvs(别忘了既然是保存肯定是有文件路径+名字(保存类型))

      

  • 相关阅读:
    [GIT]指定分支下创建分支
    [架构]辨析: 高可用 | 集群 | 主从 | 负载均衡 | 反向代理 | 中间件 | 微服务 | 容器 | 云原生 | DevOps
    [Linux]常用命令之【vi/grep/find】
    [Linux]常用命令之【netstat/ps/lsof/ss/kill/】
    [Linux]常用命令之【nl/sed/awk/wc/xargs】
    移动端vw页面适配方案在vue项目中的应用
    关于跨域,你应该知道的
    关于call、apply和bind,请看这篇
    JavaScript数组常用API方法汇总
    JS浅拷贝与深拷贝实现方式
  • 原文地址:https://www.cnblogs.com/lei0213/p/7728936.html
Copyright © 2011-2022 走看看