摘要:本文大部分內(nèi)容摘抄自官網(wǎng)的,看到巧妙之處則加了點評。,接下來的工作至此,框架已經(jīng)明確選定了,接下來,我們將進一步研讀的文檔,研究怎樣把的封裝成需要的。,文檔修改歷史,首次發(fā)布
1,引言
在《Scrapy的架構(gòu)初探》一文,我基于爬蟲開發(fā)的經(jīng)驗對Scrapy官網(wǎng)文章作了點評和解讀,事件驅(qū)動的異步處理架構(gòu)、極強的模塊化等是個絕好的框架,接著我細讀了官網(wǎng)的《Scrapy at a glance》,更加強了我的感受:就是他了——開源Python網(wǎng)絡(luò)爬蟲項目需要一個爬蟲框架,我不想重復(fù)發(fā)明輪子,只想專注于爬蟲里面的提取器的生成和使用,也就是Scrapy中的Spider部分。
本文大部分內(nèi)容摘抄自Scrapy官網(wǎng)的《Scrapy at a glance》,看到Scrapy巧妙之處則加了點評。
2,Scrapy的Spider例子在Scrapy的框架中,Spider與GooSeeker開源爬蟲的提取器類似,核心特征是
Spider通常針對一個特定網(wǎng)站
Spider里面存了爬行入口URLs集合
Scrapy的引擎順序拿Spider中的入口URL,構(gòu)造Request對象,啟動消息循環(huán)
Spider提供接口方法,把抓取下來的內(nèi)容進行輸出
對GooSeeker的MS謀數(shù)臺和DS打數(shù)機比較了解的讀者,可以把Spider想象成:MS謀數(shù)臺上定義的一組抓取規(guī)則 + 會員中心的爬蟲羅盤
下面我們從官網(wǎng)拷貝一個例子:
class StackOverflowSpider(scrapy.Spider): name = "stackoverflow" start_urls = ["http://stackoverflow.com/questions?sort=votes"] def parse(self, response): for href in response.css(".question-summary h3 a::attr(href)"): full_url = response.urljoin(href.extract()) yield scrapy.Request(full_url, callback=self.parse_question) def parse_question(self, response): yield { "title": response.css("h1 a::text").extract()[0], "votes": response.css(".question .vote-count-post::text").extract()[0], "body": response.css(".question .post-text").extract()[0], "tags": response.css(".question .post-tag::text").extract(), "link": response.url, }
看這個例子需要注意以下幾點
start_urls存儲入口網(wǎng)址列表,本例只有一個網(wǎng)址
parse()函數(shù)是爬到了網(wǎng)頁后執(zhí)行的,是由引擎回調(diào)的
本來到parse()就完成了,但是這個例子展示了一個兩級抓取的案例,在parse()里面構(gòu)造了下一級抓取的任務(wù),生成Request對象,并登記一個回調(diào)函數(shù)
parse_question()是第二級的解析網(wǎng)頁的函數(shù),返回了一個JSON對象
事件驅(qū)動模式顯而易見,可以構(gòu)造好多Request,丟給引擎即可,不用阻塞式等待
官網(wǎng)文章還總結(jié)了其他很多功能特性,總之,Scrapy是一個十分完善和強大的框架。
3,接下來的工作至此,Scrapy框架已經(jīng)明確選定了,接下來,我們將進一步研讀Scrapy的文檔,研究怎樣把GooSeeker的gsExtractor封裝成Scrapy需要的Spider。
4,文檔修改歷史2016-06-13:V1.0,首次發(fā)布
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://www.ezyhdfw.cn/yun/38003.html
摘要:時間永遠都過得那么快,一晃從年注冊,到現(xiàn)在已經(jīng)過去了年那些被我藏在收藏夾吃灰的文章,已經(jīng)太多了,是時候把他們整理一下了。那是因為收藏夾太亂,橡皮擦給設(shè)置私密了,不收拾不好看呀。 ...
摘要:引言本文簡單講解一下的架構(gòu)。沒錯,開源的通用提取器就是要集成到架構(gòu)中,最看重的是的事件驅(qū)動的可擴展的架構(gòu)。架構(gòu)圖就是針對特定目標網(wǎng)站編寫的內(nèi)容提取器,這是在通用網(wǎng)絡(luò)爬蟲框架中最需要定制的部分。 1. 引言 本文簡單講解一下Scrapy的架構(gòu)。沒錯,GooSeeker開源的通用提取器gsExtractor就是要集成到Scrapy架構(gòu)中,最看重的是Scrapy的事件驅(qū)動的可擴展的架構(gòu)。除了...
摘要:一基礎(chǔ)環(huán)境由于不是職業(yè)的開發(fā)者,因此環(huán)境是基于的。二安裝打開命令行工具創(chuàng)建虛擬環(huán)境,默認情況下會創(chuàng)建目錄,所有的虛擬環(huán)境都會產(chǎn)生一個子目錄保存在此,里面包含基本程序文件以及庫文件。 目錄 基于 Python 的 Scrapy 爬蟲入門:環(huán)境搭建 基于 Python 的 Scrapy 爬蟲入門:頁面提取 基于 Python 的 Scrapy 爬蟲入門:圖片處理 作為一個全棧工程師(...
摘要:解析的方法,每個初始完成下載后將被調(diào)用,調(diào)用的時候傳入從每一個傳回的對象來作為唯一參數(shù),主要作用如下負責解析返回的網(wǎng)頁數(shù)據(jù),提取結(jié)構(gòu)化數(shù)據(jù)生成生成需要下一頁的請求。 Scrapy 框架 Scrapy是用純Python實現(xiàn)一個為了爬取網(wǎng)站數(shù)據(jù)、提取結(jié)構(gòu)性數(shù)據(jù)而編寫的應(yīng)用框架,用途非常廣泛。 框架的力量,用戶只需要定制開發(fā)幾個模塊就可以輕松的實現(xiàn)一個爬蟲,用來抓取網(wǎng)頁內(nèi)容以及各種圖片,非常...
閱讀 910·2021-09-22 16:01
閱讀 2171·2021-08-20 09:37
閱讀 1763·2019-08-30 15:54
閱讀 1745·2019-08-30 15:44
閱讀 912·2019-08-28 18:23
閱讀 3071·2019-08-26 12:17
閱讀 1089·2019-08-26 11:56
閱讀 1596·2019-08-23 16:20