teamowu706

网络爬虫框架-Scrapy

简介:开源的Python爬虫框架,用于抓取web站点并从页面中提取结构化的数据;

用途广泛,可用于数据挖掘、监测和自动化测试

Scrapy优点

  1. 快速强大;
  2. 代码量简洁便可完成爬取;
  3. 易扩展;
  4. 可添加新的功能模块

Scrapy高级特性:

  1. 内置数据抽取器CSS/XPath/re
  2. 交互式控制台用于调试
  3. 结果输出的格式支持,JSON,CSV,XML等
  4. 自动处理编码
  5. 支持自定义扩展

Scrapy架构:

  1. 调度器从待下载URL中取出一个URL。
  2. 调度器启动采集模块-Spiders模块
  3. 采集模块把URL传给下载器下载器把资源下载下来自动处理编码。
  4. 提取目标数据,抽取出目标对象,由管道进行进一步的处理;比如存入数据库、文本。
  5. 若是解析出的是URL,则把URL插入到待爬取队列当中。

Scrapy的安装:

`conda install -c conda-forge scrapy`

检测是否安装成功:`scrapy bench`

创建工程:`scrapy startproject tutorial(项目名称)`

目录结构:

 

 


 

Scrapy使用步骤

  1. 创建工程
    scrapy startproject projectname

     

  2. 定义Item,构造爬取的对象(可选)
    object1_name = scrapy.Field() 
    object2_name = scrapy.Filed()
    object3_name = scrapy.Field()
    #创建若干个自定义爬取对象的名称

     

  3. 编写Spider,爬虫主体
    cd projectname
    scrapy genspider spidername http://www.baidu.com/
    #spidername(自定义Spider主体的文件名称),后接需要爬取的网站url。

     

  4. 编写配置和Pipeline,用于处理爬取的结果(可选)
    • 目的:处理解析的Item,将结果保存为CSV文件
    • 在文件-setting.py中配置CommentPipeline,其中,优先级为300,优先级的数值越小,优先级越高。  
    • 将文件-pipelines.py中编写的类添加到文件-setting.py中设置优先级数值。
    • 在文件-pipelines.py中定义的类,添加/编写open_spider(),close_spider()、process_item()函数。

  5. 执行爬虫Spider:
    scrapy crawl Spidername
    #Spidername和Sipder主体的文件名称一致

     

分类:

技术点:

相关文章: