网络爬虫框架-Scrapy
简介:开源的Python爬虫框架,用于抓取web站点并从页面中提取结构化的数据;
用途广泛,可用于数据挖掘、监测和自动化测试
Scrapy优点:
- 快速强大;
- 代码量简洁便可完成爬取;
- 易扩展;
- 可添加新的功能模块
Scrapy高级特性:
- 内置数据抽取器CSS/XPath/re
- 交互式控制台用于调试
- 结果输出的格式支持,JSON,CSV,XML等
- 自动处理编码
- 支持自定义扩展
Scrapy架构:
- 调度器从待下载URL中取出一个URL。
- 调度器启动采集模块-Spiders模块
- 采集模块把URL传给下载器,下载器把资源下载下来自动处理编码。
- 提取目标数据,抽取出目标对象,由管道进行进一步的处理;比如存入数据库、文本。
- 若是解析出的是URL,则把URL插入到待爬取队列当中。
Scrapy的安装:
`conda install -c conda-forge scrapy`
检测是否安装成功:`scrapy bench`
创建工程:`scrapy startproject tutorial(项目名称)`
目录结构:
Scrapy使用步骤:
- 创建工程
scrapy startproject projectname
- 定义Item,构造爬取的对象(可选)
object1_name = scrapy.Field() object2_name = scrapy.Filed() object3_name = scrapy.Field() #创建若干个自定义爬取对象的名称
-
编写Spider,爬虫主体
cd projectname scrapy genspider spidername http://www.baidu.com/
#spidername(自定义Spider主体的文件名称),后接需要爬取的网站url。 - 编写配置和Pipeline,用于处理爬取的结果(可选)
- 目的:处理解析的Item,将结果保存为CSV文件
- 在文件-setting.py中配置CommentPipeline,其中,优先级为300,优先级的数值越小,优先级越高。
- 将文件-pipelines.py中编写的类添加到文件-setting.py中设置优先级数值。
-
在文件-pipelines.py中定义的类,添加/编写open_spider(),close_spider()、process_item()函数。
-
执行爬虫Spider:
scrapy crawl Spidername #Spidername和Sipder主体的文件名称一致