python爬蟲調(diào)度器怎么用

小編給大家分享一下python爬蟲調(diào)度器怎么用,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

在濮陽等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強發(fā)展的系統(tǒng)性、市場前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務理念,為客戶提供成都網(wǎng)站建設(shè)、做網(wǎng)站 網(wǎng)站設(shè)計制作按需定制設(shè)計,公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),高端網(wǎng)站設(shè)計,營銷型網(wǎng)站建設(shè),成都外貿(mào)網(wǎng)站建設(shè),濮陽網(wǎng)站建設(shè)費用合理。

我們可以編寫幾個元件,每個元件完成一項功能,下圖中的藍底白字就是對這一流程的抽象:

python爬蟲調(diào)度器怎么用

  • UrlManager:將存儲和獲取url以及url去重的幾個步驟在url管理器中完成(當然也可以針對每一步分別編寫相應的函數(shù),但是這樣更直觀)。url管理器要有兩個url倉庫,一個存儲未爬取的url,一個存儲已爬取的url,除了倉庫之外,還應該具有一些完成特定功能的函數(shù),如存儲url、url去重、從倉庫中挑選并返回一個url等

  • HtmlDownloader:將下載網(wǎng)頁內(nèi)容的功能在HTML下載器中完成,下載器的功能較為單一,不多解釋。但從整個爬蟲的角度上來說,下載器是爬蟲的核心,在實際操作的過程中,下載器要和目標網(wǎng)站的各種反爬蟲手段斗智斗勇(各種表單、隱藏字段和假鏈接、驗證碼、IP限制等等),這也是最耗費大腦的步驟

  • HtmlParser:解析提取數(shù)據(jù)的功能在HTML解析器中完成,解析器內(nèi)的函數(shù)應該分別具有返回數(shù)據(jù)和新url的功能

  • DAtaOutput:存儲數(shù)據(jù)的功能由數(shù)據(jù)存儲器完成

  • SpiderMan:主循環(huán)由爬蟲調(diào)度器來完成,調(diào)度器為整個程序的入口,將其余四個元件有序執(zhí)行

爬蟲調(diào)度器將要完成整個循環(huán),下面寫出python下爬蟲調(diào)度器的程序:

# coding: utf-8
new_urls = set()
data = {}
 
class SpiderMan(object):
    def __init__(self):
        #調(diào)度器內(nèi)包含其它四個元件,在初始化調(diào)度器的時候也要建立四個元件對象的實例
        self.manager = UrlManager()
        self.downloader = HtmlDownloader()
        self.parser = HtmlParser()
        self.output = DataOutput()
 
    def spider(self, origin_url):
        #添加初始url
 
        self.manager.add_new_url(origin_url)
        #下面進入主循環(huán),暫定爬取頁面總數(shù)小于100
        num = 0
        while(self.manager.has_new_url() and self.manager.old_url_size()<100):
            try:
                num = num + 1
                print "正在處理第{}個鏈接".format(num)
                #從新url倉庫中獲取url
                new_url = self.manager.get_new_url()
                #調(diào)用html下載器下載頁面
                html = self.downloader.download(new_url)
                #調(diào)用解析器解析頁面,返回新的url和data
                try:
                    new_urls, data = self.parser.parser(new_url, html)
                except Exception, e:
                    print e
                for url in new_urls:
                    self.manager.add_new_url(url)
                #將已經(jīng)爬取過的這個url添加至老url倉庫中
                self.manager.add_old_url(new_url)
                #將返回的數(shù)據(jù)存儲至文件
                try:
                    self.output.store_data(data)
                    print "store data succefully"
                except Exception, e:
                    print e
                print "第{}個鏈接已經(jīng)抓取完成".format(self.manager.old_url_size())
 
            except Exception, e:
                print e
        #爬取循環(huán)結(jié)束的時候?qū)⒋鎯Φ臄?shù)據(jù)輸出至文件
        self.output.output_html()

以上是“python爬蟲調(diào)度器怎么用”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學習更多知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!

分享題目:python爬蟲調(diào)度器怎么用
網(wǎng)站路徑:http://muchs.cn/article42/pphdec.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供外貿(mào)網(wǎng)站建設(shè)、ChatGPT商城網(wǎng)站、響應式網(wǎng)站網(wǎng)站改版、網(wǎng)站建設(shè)

廣告

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

網(wǎng)站優(yōu)化排名