在使⽤Scrapy开发爬⾍时,通常需要创建⼀个Scrapy项⽬。通过如下命令即可创建 Scrapy 项⽬: scrapy startproject ZhipinSpider
在上⾯命令中,scrapy 是Scrapy 框架提供的命令;startproject 是 scrapy 的⼦命令,专门⽤于创建项⽬;ZhipinSpider 就是要创建的项⽬名。
scrapy 除提供 startproject ⼦命令之外,它还提供了 fetch(从指定 URL 获取响应)、genspider(⽣成蜘蛛)、shell(启动交互式控制台)、version(查看 Scrapy 版本)等常⽤的⼦命令。可以直接输⼊ scrapy 来查看该命令所⽀持的全部⼦命令。
1、运⾏上⾯命令,将会看到如下输出结果(正常):
New Scrapy project 'ZhipinSpider', using template directory 'd:\\python3.6\\lib\\site-packages\\scrapy\emplates\\project', created in: C:\\Users\\mengma\\ZhipinSpider
You can start your first spider with: cd ZhipinSpider
scrapy genspider example example.com
View Code
上⾯信息显⽰ Scrapy 在当前⽬录下创建了⼀个 ZhipinSpider 项⽬,此时在当前⽬录下就可以看到⼀个 ZhipinSpider ⽬录,该⽬录就代表ZhipinSpider 项⽬。
2、运⾏上⾯命令,将会看到如下输出结果(异常):
Fatal error in launcher: Unable to create process using '\"'
解决⽅法:
python -m scrapy startproject XXXX
View Code
查看 ZhipinSpider 项⽬,可以看到如下⽂件结构:
ZhipinSpider │ scrapy.cfg │
└──ZhipinSpider │ item.py
│ middlewares.py │ pipelines.py │ setting.py │
├─ spiders
│ │ __init__.py │ │
│ └─ __pycache__ └─ __pycache__
下⾯⼤致介绍这些⽬录和⽂件的作⽤:
scrapy.cfg:项⽬的总配置⽂件,通常⽆须修改。
ZhipinSpider:项⽬的 模块,程序将从此处导⼊ Python 代码。
ZhipinSpider/items.py:⽤于定义项⽬⽤到的 Item 类。Item 类就是⼀个 DTO(数据传输对象),通常就是定义 N 个属性,该类需要由开发者来定义。
ZhipinSpider/pipelines.py:项⽬的管道⽂件,它负责处理爬取到的信息。该⽂件需要由开发者编写。ZhipinSpider/settings.py:项⽬的配置⽂件,在该⽂件中进⾏项⽬相关配置。
ZhipinSpider/spiders:在该⽬录下存放项⽬所需的蜘蛛,蜘蛛负责抓取项⽬感兴趣的信息。 为了更好地理解 Scrapy 项⽬中各组件的作⽤,下⾯给出 Scrapy 概览图,如图 1 所⽰。
图 1 Scrapy 概览图
在图 1 中可以看到,Scrapy 包含如下核⼼组件:
调度器:该组件由 Scrapy 框架实现,它负责调⽤下载中间件从⽹络上下载资源。
下载器:该组件由 Scrapy 框架实现,它负责从⽹络上下载数据,下载得到的数据会由 Scrapy 引擎⾃动交给蜘蛛。
蜘蛛:该组件由开发者实现,蜘蛛负责从下载数据中提取有效信息。蜘蛛提取到的信息会由 Scrapy 引擎以 Item 对象的形式转交给Pipeline。
Pipeline:该组件由开发者实现,该组件接收到 Item 对象(包含蜘蛛提取的信息)后,可以将这些信息写⼊⽂件或数据库中。经过上⾯分析可知,使⽤ Scrapy 开发⽹络爬⾍主要就是开发两个组件,蜘蛛和 Pipeline。
因篇幅问题不能全部显示,请点此查看更多更全内容