scrapy初試
scrapy初試
創建項目
打開cmd
,在終端輸入scrapy startproject tutorial
,這裡將在指定的文件夾下創建一個scrapy
工程
其中將會創建以下的文件:
scrapy.cfg
: 項目的配置文件tutorial/
: 該項目的python模塊。之後您將在此加入代碼。tutorial/items.py
: 項目中的item文件.tutorial/pipelines.py
: 項目中的pipelines文件.tutorial/settings.py
: 項目的設置文件.tutorial/spiders/
: 放置spider代碼的目錄.
定義item
Item
是保存爬取到的數據的容器;其使用方法和python
字典類似, 並且提供了額外保護機制來避免拼寫錯誤導致的未定義欄位錯誤。類似在ORM
中做的一樣,您可以通過創建一個scrapy.Item
類, 並且定義類型為scrapy.Field
的類屬性來定義一個Item
。 (如果不了解ORM
, 不用擔心,您會發現這個步驟非常簡單)首先根據需要從
dmoz.org
獲取到的數據對item
進行建模。 我們需要從dmoz
中獲取名字,url
,以及網站的描述。 對此,在item
中定義相應的欄位。編輯tutorial
目錄中的items.py
文件:
import scrapyclass DmozItem(scrapy.Item):title = scrapy.Field()link = scrapy.Field()desc = scrapy.Field()
一開始這看起來可能有點複雜,但是通過定義item, 您可以很方便的使用Scrapy的其他方法。而這些方法需要知道您的item的定義.
編寫第一個爬蟲
在工程的根目錄下打開終端輸入scrapy genspider demo douban.com
這裡的demo
是spders
文件下的主要py
文件douban.com
是要爬取的域名,會在demo.py
中的 allowed_domains
中顯示,主要的功能就是限制爬取的url
spider代碼中內容解析
name
: 用於區別Spider
。 該名字必須是唯一的,您不可以為不同的Spider
設定相同的名字。start_urls
: 包含了Spider
在啟動時進行爬取的url
列表。 因此,第一個被獲取到的頁面將是其中之一。 後續的URL
則從初始的URL
獲取到的數據中提取。parse()
是spider的一個方法。 被調用時,每個初始URL
完成下載後生成的 Response 對象將會作為唯一的參數傳遞給該函數。 該方法負責解析返回的數據(response data
),提取數據(生成item
)以及生成需要進一步處理的URL
的Request
對象。
以下是spider目錄下的demo.py的代碼
import scrapy
class DmozSpider(scrapy.Spider):name = "dmoz"allowed_domains = ["dmoz.org"]start_urls = [ "http://www.dmoz.org/Computers/Programming/Languages/Python/Books/", "http://www.dmoz.org/Computers/Programming/Languages/Python/Resources/"]def parse(self, response): filename = response.url.split("/")[-2] with open(filename, wb) as f: f.write(response.body)
spider的爬取
進入工程的根目錄下打開終端輸入:scrapy crawl dmoz
spider中的數據存取
在工程的根目錄下打開終端輸入scrapy crawl dmoz -o items.json
這裡是將數據存儲到json
文件中
推薦閱讀:
※Python學習筆記 ——yield
※推薦一些相見恨晚的 Python 庫 「二」
※python操作Mysql資料庫
※Python黑帽編程 3.1 ARP欺騙
※100G Python從入門到精通全套資料!
TAG:Python |