Scrapy學習筆記

來源:互聯網
上載者:User

標籤:des   style   blog   http   使用   strong   

所謂網路爬蟲,就是一個在網上到處或定向抓取資料的程式,當然,這種說法不夠專業,更專業的描述就是,抓取特定網站網頁的HTML資料。不過由於一個網站的網頁很多,而我們又不可能事Crowdsourced Security Testing道所有網頁的URL地址,所以,如何保證我們抓取到了網站的所有HTML頁面就是一個有待考究的問題了。一般的方法是,定義一個入口頁面,然後一般一個頁面會有其他頁面的URL,於是從當前頁面擷取到這些URL加入到爬蟲的抓取隊列中,然後進入到新頁面後再遞迴的進行上述的操作,其實說來就跟深度遍曆或廣度遍曆一樣。

Scrapy是一個基於Twisted,純Python實現的爬蟲架構,使用者只需要定製開發幾個模組就可以輕鬆的實現一個爬蟲,用來抓取網頁內容以及各種圖片,非常之方便~

Scrapy 使用 Twisted這個非同步網路程式庫來處理網路通訊,架構清晰,並且包含了各種中介軟體介面,可以靈活的完成各種需求。整體架構如所示:

綠線是資料流向,首先從初始URL 開始,Scheduler 會將其交給 Downloader 進行下載,下載之後會交給 Spider 進行分析,Spider分析出來的結果有兩種:一種是需要進一步抓取的連結,例如之前分析的“下一頁”的連結,這些東西會被傳回 Scheduler ;另一種是需要儲存的資料,它們則被送到Item Pipeline 那裡,那是對資料進行後期處理(詳細分析、過濾、儲存等)的地方。另外,在資料流動的通道裡還可以安裝各種中介軟體,進行必要的處理。

1.建立一個Scrapy項目:scrapy startproject 項目名

 

Microsoft Windows XP [Version 5.1.2600](C) Copyright 1985-2001 Microsoft Corp.T:\>scrapy startproject tutorialT:\>

 

這個命令會在目前的目錄下建立一個新目錄tutorial,它的結構如下:

 

T:\tutorial>tree /fFolder PATH listingVolume serial number is 0006EFCF C86A:7C52T:.│  scrapy.cfg│└─tutorial    │  items.py    │  pipelines.py    │  settings.py    │  __init__.py    │    └─spiders            __init__.py

 

這些檔案主要是:

 

  • scrapy.cfg: 項目設定檔
  • tutorial/: 項目python模組, 呆會代碼將從這裡匯入
  • tutorial/items.py: 項目items檔案
  • tutorial/pipelines.py: 項目管道檔案
  • tutorial/settings.py: 項目設定檔
  • tutorial/spiders: 放置spider的目錄

定義Item

Items是將要裝載抓取的資料的容器,它工作方式像python裡面的字典,但它提供更多的保護,比如對未定義的欄位填充以防止拼字錯誤。

它通過建立一個scrapy.item.Item類來聲明,定義它的屬性為scrpy.item.Field對象,就像是一個對象關係映射(ORM). 

在items.py檔案中,定義一個scrapy.item.Item類,在其中定義我們想要從抓取到的網頁資料中解析擷取的資料的Field(scrpy.item.Field類型)

from scrapy.item import Item, Field class DmozItem(Item):    title = Field()    link = Field()    desc = Field()

定義Spider

他們定義了用於下載的URL的初步列表,如何跟蹤連結,以及如何來解析這些網頁的內容用於提取items。

要建立一個Spider,你必須為scrapy.spider.BaseSpider建立一個子類,並確定三個主要的、強制的屬性:

  • name:爬蟲的識別名,它必須是唯一的,在不同的爬蟲中你必須定義不同的名字.
  • start_urls:爬蟲開始爬的一個URL列表。爬蟲從這裡開始抓取資料,所以,第一次下載的資料將會從這些URLS開始。其他子URL將會從這些起始URL中繼承性產生。
  • parse():爬蟲的方法,調用時候傳入從每一個URL傳回的Response對象作為參數,response將會是parse方法的唯一的一個參數,

這個方法負責解析返回的資料、匹配抓取的資料(解析為item)並跟蹤更多的URL。

 

 

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.