Python Scrapy項目創建(基礎普及篇)


在使用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
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 模塊,程序將從此處導入 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。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM