国产探花免费观看_亚洲丰满少妇自慰呻吟_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進行處理。

 

待續。。。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 万荣县| 治县。| 勐海县| 大同市| 巴马| 闽侯县| 大连市| 沭阳县| 湖北省| 平阴县| 靖西县| 府谷县| 涿鹿县| 宜黄县| 沽源县| 香港| 新兴县| 南郑县| 江口县| 江陵县| 女性| 南华县| 肇州县| 朝阳区| 寻甸| 石楼县| 怀仁县| 永仁县| 商丘市| 云梦县| 沂源县| 嘉荫县| 乌拉特中旗| 双峰县| 项城市| 灵台县| 阿拉善右旗| 香格里拉县| 怀集县| 建宁县| 徐州市|