国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

淺談Scrapy爬蟲(一)

2019-11-14 17:49:06
字體:
來源:轉載
供稿:網友

以下談論的 scrapy 基于 0.20.2 版本(當前最新版本是 0.22.0 ),python 2.7.6。

開發環境是Windows 7 sp1。

 

互聯網上比較有價值的參考資料

1. Scrapy入門教程

對官網文檔的翻譯,主要講了 scrapy 的基本使用。創建一個工程,使用 item 和 spider 。我們會簡單涉及到官方教程的內容。

2. 使用scrapy進行大規模抓取

這篇文章并未涉及到代碼細節,介紹了一些使用 scrapy 的經驗,用的是較老的0.9版本。我們會對該文章涉及到的內容簡單展開。

 

一 安裝 scrapy

因為不同的版本 scrapy 依賴庫變換很大,網上的安裝教程版本太老,所以我的建議是直接安裝 scrapy ,運行 scrapy 時 python 打印的錯誤可以看出是缺少了哪個庫,缺了哪個安裝哪個。

安裝 scrapy 后 會多出 python/Scripts 目錄,記得添加到環境變量,這樣才能直接在命令行使用“scrapy”命令。

 

二 創建項目

在命令行運行 “scrapy startPRoject 項目名”可以直接在當前目錄創建 scrapy 工程。

工程目錄會有如下文件:

scrapy.cfg

配置文件,開發中基本用不到。

ajian/item.py

這里主要處理遞歸爬取和返回頁面數據。

ajian/pipelines.py

返回的數據會傳到這里,進行下一步處理。存儲到數據庫或者進行分析,隨你喜歡。

ajian/settings.py

設置文件,有很多有趣的設置,比如是深度還是廣度爬,對每個IP的爬蟲數,每個域名的爬蟲數,總爬蟲數,爬蟲延時等等。

ajian/__init__.py

ajian/spider/__init__.py

上述兩個文件是 python 包要求的文件,對 scrapy 作用不大。

 

三 構建第一個蜘蛛

使用命令構建的項目默認生成了 pipelines.py 卻沒有生成 spider.py 文件,有點讓人摸不著頭腦。不過無所謂,我們自己寫一個就好了。在 spider 新建文件 ajian_spider.py 內容如下。

from scrapy.spider import BaseSpiderclass AJianSpider(BaseSpider):    name = "ajian"    start_urls = [        "http://www.163.com/"    ]    def parse(self, response):        print response.body

其中 name 變量和 start_urls 是必須的,name 變量是啟動 scrapy 抓取時指定的蜘蛛名, start_urls 是初始抓取的 url,是個 list,可以指定多個?,F在一個最簡單的蜘蛛就做好了,只有一個功能,輸出163的頁面內容。

這個蜘蛛太遜了,我們加上最基本的功能,返回頁面內容、遞歸爬取。

在講返回頁面內容和遞歸爬取之前,先了解一些背景知識。

spider.py 文件中的 parse 函數實際是個迭代器,python 有一個命令 yield ,有一篇文章很詳細的說明了 yield 的作用。這里簡略描述一下。當調用 yield 時,不僅會返回值,還會記錄當前函數的狀態,在下次調用函數時,會從調用 yield 的下一句開始執行。相當于函數執行到一半,先返回給調用者一個結果,再接著執行。

parse 可以返回兩種對象,一種是 item 另外一種是 Request,分別對應著頁面內容和遞歸請求。

如果返回的是Request,那么會將這個返回結果放到待抓取列表;如果返回的是item,則會傳遞到pipelines.py進行處理。

 

待續。。。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 望江县| 贺兰县| 壤塘县| 金沙县| 黎川县| 平谷区| 东乌| 太仆寺旗| 田东县| 彰武县| 福贡县| 兴国县| 阜康市| 乐昌市| 上蔡县| 苍山县| 奇台县| 随州市| 阳朔县| 南丰县| 密云县| 丰县| 昆明市| 象州县| 昭平县| 丰顺县| 儋州市| 淳安县| 郴州市| 潮州市| 鱼台县| 湖北省| 当涂县| 襄樊市| 巴彦县| 化隆| 宁德市| 黄浦区| 商都县| 安岳县| 江华|