• 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(别忘了既然是保存肯定是有文件路径+名字(保存类型))

      

  • 相关阅读:
    [数学建模(八)]使用MATLAB绘图
    [数学建模(七)]使用MATLAB实现数据拟合
    [数学建模(六)]使用MATLAB实现插值
    [数学建模(五)]线性规划,二次规划和非线性规划的MATLAB求解
    [数学建模(四)]MATLAB神经网络工具箱的简单应用
    [数学建模(三)]遗传算法与旅行商问题
    [数学建模(二)模拟退火法与旅行商问题]
    [数学建模(一)]蒙特卡罗方法
    Java虚拟机13:Java类加载机制
    Java虚拟机14:类加载器
  • 原文地址:https://www.cnblogs.com/lei0213/p/7728936.html
Copyright © 2020-2023  润新知