iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 11
1
AI & Data

Scrapy爬蟲與資料處理30天筆記系列 第 11

[Day 11] 建立 Scrapy 專案

嗨!今天是第11天了,之前說明爬ptt的過程,其實我們可以理解到爬蟲的流程為:

  • 下載頁面內容:根據該網頁url下載網頁(HTML)
  • 分析頁面中的資料:下載完該網頁後對該網頁進行分析取興趣的資料
  • 分析頁面中的連結:因為要取的資料不會只在單一頁面而是在多個頁面,所以觀察頁面間的關係並將連結取出來。

上面三個動作的循環便是爬蟲的執行流程。
為了簡化爬蟲的開發工作,我們會使用較強大的爬蟲框架來降低開發成本,也就是Scrapy啦!

什麼是Scrapy

scrapy_architecture_02.png
(圖片來源 : Scrapy 1.5.1 documentation)

  1. Spider發送最初的請求(Requests)給Engine
  2. EngineScheduler調度一個請求(Requests),並要求下一次Requests做爬取。
  3. Scheduler回傳下一個Requests給Engine
  4. Engine透過Downloader Middlewares發送請求給Downloader
  5. 只要頁面結束下載,Downloader產生一個Response透過Downloader Middlewares傳送給Engine
  6. Engine收到來自Downloader的Response並透過Spider Middlewares發送給Spider處理。
  7. Spider處理Response並爬取的項目(item)和新的請求(Requests),透過Spider Middlewares回傳給Engine
  8. Engine發送處理的項目(item)給Item Pipelines接著發送處理的請求(Requests)到Scheduler要求下一個可能的爬蟲請求。

元件介紹:

  • Scrapy Engine:整個框架的核心負責處理整個系統的資料流與事件。
  • Scheduler:排程器,接收Engine的請求放到佇列中並決定下一個要抓取的網址(預設也會去除重複的網址)。
  • Downloader:用於下載網頁內容(發送HTTP請求/接收HTTP回應),並將內容返回給Spider。
  • Spiders:從網頁中提取自己需要的項目。
  • Item Pipeline:用來持久化實體、驗證實體的有效性、清除不需要的資訊。當頁面被解析後發送到專案管道經過幾個特定的順序處理資料。
  • Downloader middlewares:Scrapy Engine和Downloader間的中介,負責處理Scrapy Engine與Downloader之間的RequestsResponse

建立第一個專案

  • 在開始之前,啟用virtualenv
source path/to/your/virtualenv/bin/activate

若沒有Scrapy套件,可用pip安裝:

  • 若是pip3則將pip改成pip3
pip install scrapy

這樣就完成了!
如果要確認是否安裝成功的話,可以直接在終端機執行scrapy

(.env) ~ scrapy

Scrapy 1.3.3 - no active project

Usage:
  scrapy <command> [options] [args]

Available commands:
  bench         Run quick benchmark test
  commands
  fetch         Fetch a URL using the Scrapy downloader
  genspider     Generate new spider using pre-defined templates
  runspider     Run a self-contained spider (without creating a project)
  settings      Get settings values
  shell         Interactive scraping console
  startproject  Create new project
  version       Print Scrapy version
  view          Open URL in browser, as seen by Scrapy

  [ more ]      More commands available when run from project directory

Use "scrapy <command> -h" to see more info about a command

出現上述的指令說明文字表示已經成功安裝好了!

現在就來開啟我們第一個Scrapy專案:
scrapy startproject <project_name>

scrapy startproject myFirstScrapyProject

會看到以下的內容:

New Scrapy project 'myFirstScrapyProject', using template directory 
...
You can start your first spider with:
    cd myFirstScrapyProject
    scrapy genspider example example.com

那麼我們就照著它做吧:

cd myFirstScrapyProject
scrapy genspider example example.com

創建專案後,可以看到該目錄下的檔案:
Imgur

這樣就創建好專案了,是不是非常容易呢?
今天就介紹到這裡,接下來會來說明如何完成Spider的專案!

參考:
Architecture overview — Scrapy 1.5.1 documentation


上一篇
[Day 10] 實戰:用Requests&bs4 爬PTT (2)
下一篇
[Day 12] 撰寫一隻Spider
系列文
Scrapy爬蟲與資料處理30天筆記30

尚未有邦友留言

立即登入留言