在使用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\templates\project', created in: C:\Users\mengma\ZhipinSpider You can start your first spider with: cd ZhipinSpider scrapy genspider example example.com
上面信息顯示 Scrapy 在當前目錄下創建了一個 ZhipinSpider 項目,此時在當前目錄下就可以看到一個 ZhipinSpider 目錄,該目錄就代表 ZhipinSpider 項目。
2、運行上面命令,將會看到如下輸出結果(異常):
Fatal error in launcher: Unable to create process using '"'
解決方法:

python -m scrapy startproject XXXX
查看 ZhipinSpider 項目,可以看到如下文件結構:
ZhipinSpider
│ scrapy.cfg
│
└──ZhipinSpider
│ item.py
│ middlewares.py
│ pipelines.py
│ setting.py
│
├─ spiders
│ │ __init__.py
│ │
│ └─ __pycache__
└─ __pycache__
下面大致介紹這些目錄和文件的作用:
- scrapy.cfg:項目的總配置文件,通常無須修改。
- ZhipinSpider:項目的 Python 模塊,程序將從此處導入 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。