在這個教材中,我們假定你已經安裝了Scrapy。假如你沒有安裝,你可以參考這個安裝指南。
我們將會用開放目錄項目(dmoz)作為我們例子去抓取。
這個教材將會帶你走過下面這幾個方面:
創造一個新的Scrapy項目 定義您將提取的Item 編寫一個蜘蛛去抓取網站并提取Items。 編寫一個Item Pipeline用來存儲提出出來的ItemsScrapy由Python寫成。假如你剛剛接觸Python這門語言,你可能想要了解這門語言起,怎么最好的利用這門語言。假如你已經熟悉其它類似的語言,想要快速地學習Python,我們推薦這種深入方式學習Python。假如你是新手,想從開始使用Python學習,可以嘗試去看看非程序員Python資源列表。
創造一個項目
在你要抓取之前,首先要建立一個新的Scrapy項目。然后進去你的存放代碼目錄,執行如下命令。
scrapy startproject tutorial
它將會創建如下的向導目錄:
代碼如下:tutorial/
scrapy.cfg
tutorial/
__init__.py
items.py
pipelines.py
settings.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類來聲明并定義它們的屬性作為scrapy.item.Field 對象,就像是一個對象關系映射(假如你不熟悉ORMs,你將會看見它是一個簡單的任務).
我們將需要的item模塊化,來控制從demoz.org網站獲取的數據,比如我們將要去抓取網站的名字,url和描述信息。我們定義這三種屬性的域。我們編輯items.py文件,它在向導目錄中。我們Item類看起來像這樣。
from scrapy.item import Item, Field class DmozItem(Item): title = Field() link = Field() desc = Field()
這個看起來復雜的,但是定義這些item能讓你用其他Scrapy組件的時候知道你的item到底是什么
新聞熱點
疑難解答