scrapy適合用來(lái)處理python爬蟲(chóng)調(diào)度么

這篇文章給大家分享的是有關(guān)scrapy適合用來(lái)處理python爬蟲(chóng)調(diào)度么的內(nèi)容。小編覺(jué)得挺實(shí)用的,因此分享給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧。

讓客戶滿意是我們工作的目標(biāo),不斷超越客戶的期望值來(lái)自于我們對(duì)這個(gè)行業(yè)的熱愛(ài)。我們立志把好的技術(shù)通過(guò)有效、簡(jiǎn)單的方式提供給客戶,將通過(guò)不懈努力成為客戶在信息化領(lǐng)域值得信任、有價(jià)值的長(zhǎng)期合作伙伴,公司提供的服務(wù)項(xiàng)目有:域名申請(qǐng)、虛擬空間、營(yíng)銷軟件、網(wǎng)站建設(shè)、焦作網(wǎng)站維護(hù)、網(wǎng)站推廣。

需要使用代碼來(lái)爬一些數(shù)據(jù)的大概分為兩類人:

非程序員,需要爬一些數(shù)據(jù)來(lái)做畢業(yè)設(shè)計(jì)、市場(chǎng)調(diào)研等等,他們可能連 Python 都不是很熟;

程序員,需要設(shè)計(jì)大規(guī)模、分布式、高穩(wěn)定性的爬蟲(chóng)系統(tǒng),對(duì)他們來(lái)說(shuō),語(yǔ)言都無(wú)所謂的,更別說(shuō)用不用框架了。

 

對(duì)于一個(gè)任何一個(gè)已經(jīng)入門(mén)的程序員來(lái)說(shuō),Python 都算不上一個(gè)很復(fù)雜的語(yǔ)言,除了不用大括號(hào)可能讓一些人感覺(jué)有些不適應(yīng)之外,基本上看看語(yǔ)法上手就能寫(xiě)了。但是恰恰是因?yàn)槲覀兌际抢纤緳C(jī)了,所以不能體會(huì)到使用一門(mén)編程語(yǔ)言對(duì)于外行來(lái)說(shuō)可能『比登天還難』。如果不用 scrapy,可能我只需要這樣:

import requests
 
def main():
    for i in range(100):
        rsp = requests.get(f"http://www.example.com/{i}.html")
        with open("example-{i}.txt", "w") as f:
            f.write(rsp.text)
 
if __name__ == "__main__":
    main()

就寫(xiě)好了一個(gè)簡(jiǎn)單的爬蟲(chóng),而使用 scrapy 呢,大概需要這樣吧:

import scrapy
 
class QuotesSpider(scrapy.Spider):
    name = 'quotes'
    
    def start_requests(self):
        urls = [
            'http://quotes.toscrape.com/page/1/',
            'http://quotes.toscrape.com/page/2/'
        ]
        for url in urls:
            yield scrapy.Request(url=url, callback=self.parse)
 
    def parse(self, response):
        page = response.url.split('/')[-2]
        filename = 'quotes-%s.html' % page
        with open(filename, 'wb') as f:
            f.write(response.body)
        self.log('Save file %s' % filename)

先不說(shuō)代碼增長(zhǎng)了一倍有余,初學(xué)者會(huì)問(wèn)到這些問(wèn)題:什么是 class?為什么類還有參數(shù)?啊,什么是繼承?yield 又是什么鬼,那個(gè) scrapy.Request 又是啥?這些都是負(fù)擔(dān)。

 

既然要開(kāi)發(fā)大型爬蟲(chóng)系統(tǒng),那么其中很重要的一部分就是爬蟲(chóng)的調(diào)度了。一種比較簡(jiǎn)單的模式是 scheduler 作為 master,全局調(diào)度。另一種模式?jīng)]有 master,所有的爬蟲(chóng) worker 都是對(duì)等的。在實(shí)際生產(chǎn)中顯然是第一種用的更多。

顯然 scheduler 這部分是不能再用一個(gè)爬蟲(chóng)框架來(lái)實(shí)現(xiàn)的,連主循環(huán)都沒(méi)有咋寫(xiě)邏輯呢?我們可能還要實(shí)現(xiàn)增量爬取,或者消費(fèi)業(yè)務(wù)方發(fā)來(lái)的爬取請(qǐng)求等各種業(yè)務(wù),這塊顯然是在 scheduler 里面的,那么這個(gè)爬蟲(chóng)系統(tǒng)無(wú)非是 scheduler 分發(fā)任務(wù)給各個(gè) worker 來(lái)抓取。worker 還可以使用 scrapy 實(shí)現(xiàn),但是呢,這個(gè) worker 其實(shí)已經(jīng)弱化為一層薄薄的 downloader 了,那我要他干嘛呢?scrapy 的核心邏輯也不過(guò)是個(gè)深度或者廣度優(yōu)先的遍歷而已,少一個(gè)依賴不好么……

爬蟲(chóng)的工作量要么在反爬,要么在調(diào)度等業(yè)務(wù)邏輯,本身只是一個(gè) requests.get 而已,scrapy 提供的種種抽象對(duì)于初學(xué)者太復(fù)雜,大型系統(tǒng)又用不上,所以個(gè)人不推薦使用包括但不限于 scrapy 在內(nèi)的所有爬蟲(chóng)框架。

感謝各位的閱讀!關(guān)于scrapy適合用來(lái)處理python爬蟲(chóng)調(diào)度么就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,讓大家可以學(xué)到更多知識(shí)。如果覺(jué)得文章不錯(cuò),可以把它分享出去讓更多的人看到吧!

本文題目:scrapy適合用來(lái)處理python爬蟲(chóng)調(diào)度么
本文網(wǎng)址:http://bm7419.com/article20/gocjjo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站改版、App設(shè)計(jì)動(dòng)態(tài)網(wǎng)站、品牌網(wǎng)站制作全網(wǎng)營(yíng)銷推廣、網(wǎng)站內(nèi)鏈

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都定制網(wǎng)站網(wǎng)頁(yè)設(shè)計(jì)