<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
        問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
        當前位置: 首頁 - 科技 - 知識百科 - 正文

        python之調度器的用法

        來源:懂視網 責編:小采 時間:2020-11-27 14:23:54
        文檔

        python之調度器的用法

        python之調度器的用法:繼續上一篇文章的內容,上一篇文章中,將爬蟲調度器已經寫好了,調度器是整個爬蟲程序的大腦,也可以稱之為指揮中心。而現在,我們要做的就是去將調度器中用到的其他組件寫好。首先是url管理器,它既然作為管理器,那么它一定要區分待爬取的url和已經爬取
        推薦度:
        導讀python之調度器的用法:繼續上一篇文章的內容,上一篇文章中,將爬蟲調度器已經寫好了,調度器是整個爬蟲程序的大腦,也可以稱之為指揮中心。而現在,我們要做的就是去將調度器中用到的其他組件寫好。首先是url管理器,它既然作為管理器,那么它一定要區分待爬取的url和已經爬取

          繼續上一篇文章的內容,上一篇文章中,將爬蟲調度器已經寫好了,調度器是整個爬蟲程序的“大腦”,也可以稱之為指揮中心。而現在,我們要做的就是去將調度器中用到的其他組件寫好。首先是url管理器,它既然作為管理器,那么它一定要區分待爬取的url和已經爬取的url,否則會重復爬取。這里教程用的是set集合,將兩個url暫時存放到集合中,也就是內存中,畢竟比較爬取的數據比較少,當然也可以存放到別的地方,比如緩存或者關系型數據庫中。 

            第一次是調度器初始化函數中,創建這個urlmanager對象,

            第二次是調用了add_new_url方法來將最初始的url加入到帶爬取的集合中,

            第三次是在爬取過程中來判斷是否有待爬取的url,

            第四次是將要爬取的url從集合中取出來,

            第五次是將頁面解析出來的新的一組url再次添加到帶爬去集合中

          那么我們接下來就要做的是用代碼來實現這些功能:

         1 class UrlManager(object): 2 """docstring for UrlManager""" 3 def __init__(self): 4 self.new_urls = set() 5 self.old_urls = set() 6 #向管理器中添加一個新的url 7 def add_new_url(self,url): 8 if url is None: 9 return10 if url not in self.new_urls and url not in self.old_urls:11 self.new_urls.add(url)12 #從爬取數據中向管理器中批量添加url13 def add_new_urls(self,urls):14 if urls is None or len(urls) == 0:15 return16 for url in urls:17 self.add_new_url(url)18 #判斷是否有新的url19 def has_new_url(self):20 return (len(self.new_urls) != 0)21 #從管理器中取出一個新的url22 def get_new_url(self):23 new_url = self.new_urls.pop()24 self.old_urls.add(new_url)25 return new_url

          好,到這,url管理器就搞定了!

          接下來就是url下載器了,很簡單一個功能,將程序訪問的頁面保存下來。

         下載器只在調度器中出現過兩次:

            第一次是初始化的時候創建

            第二次是緊接著取到url之后,馬上調用它來下載頁面

          在url下載器中,原教程使用的是urllib庫,我覺得有點繁瑣。所以我換成了一個更好用的庫:requests。這個庫可以幫助我屏蔽許多技術難題,直接去抓取我們想要訪問的頁面,而且使用起來非常簡單。

          

         1 import requests 2 3 class HtmlDownloader(object): 4 """docstring for HtmlDownloader""" 5 def download(self,url): 6 if url is None: 7 return 8 response = requests.get(url, timeout = 0.1) 9 response.encoding = 'utf-8'10 if response.status_code == requests.codes.ok:11 return response.text12 else:13 return

          簡要講一下這段代碼:

            a.首先要導入requests庫,這個因為是第三方庫,所以需要你自己下載 ,在命令行 輸入 :pip install requests

            b.然后開始寫下載器這個類,這個類只有一個方法,就是download。這個方法首先會接受你給定的url,然后對其進行判斷是否存在。

            c.然后調用requests的get方法,它里面接受兩個參數,一個是url,還有一個是timeout

              timeout是我自己額外加進去的,就是訪問超時。如果不加timeout,程序會假死,也就是說會一直在那里等待頁面的響應,也不拋出異常。

            d.然后對返回的response進行編碼設置,因為爬取的百度百科頁面是utf-8,所以這里最好還是設置一下,雖然requests會智能判斷,但是還是手動改一下為宜。

            e.然后在判斷頁面是否響應,這里的codes.ok其實就是200,表示網頁正常響應,你這里直接寫 response.status_code == 200 也沒問題。

            f.最后,將頁面的所有內容都返回,這里的text就是一個字符串,它包含了一個頁面的所有代碼(html,css,js)。

        聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

        文檔

        python之調度器的用法

        python之調度器的用法:繼續上一篇文章的內容,上一篇文章中,將爬蟲調度器已經寫好了,調度器是整個爬蟲程序的大腦,也可以稱之為指揮中心。而現在,我們要做的就是去將調度器中用到的其他組件寫好。首先是url管理器,它既然作為管理器,那么它一定要區分待爬取的url和已經爬取
        推薦度:
        標簽: 使用 用法 解決
        • 熱門焦點

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 亚洲毛片在线免费观看| 国精产品一区一区三区免费视频 | 亚洲一区精品中文字幕| 亚洲A∨无码无在线观看| 中国一级毛片免费看视频| 亚洲精品视频免费在线观看| 亚洲综合av永久无码精品一区二区| 国产免费伦精品一区二区三区| 久久久精品国产亚洲成人满18免费网站| 四虎国产精品成人免费久久| 亚洲精品国精品久久99热| 久久亚洲精品无码aⅴ大香| 国产1000部成人免费视频| 亚洲综合色区中文字幕| 国产又大又粗又硬又长免费| 日韩在线视频免费| 国产aⅴ无码专区亚洲av| 亚洲高清毛片一区二区| 亚洲毛片免费视频| 伊人久久亚洲综合影院首页| 成人爽a毛片免费| 亚洲精品在线免费观看| AV片在线观看免费| 免费无码午夜福利片| 国内外成人免费视频| 精品韩国亚洲av无码不卡区| 国产亚洲精品线观看动态图| 99蜜桃在线观看免费视频网站| 亚洲国产成人久久99精品| 毛片在线全部免费观看| 亚洲精品tv久久久久| 久久这里只精品99re免费| 亚洲中文字幕久久精品无码APP | 日本大片在线看黄a∨免费| 美女视频黄a视频全免费网站色| 中文字幕精品亚洲无线码二区| 国产成人免费午夜在线观看| 中文字幕无码精品亚洲资源网| 久久成人免费电影| 国产精品亚洲精品日韩电影| 亚洲AV无码一区二区乱子伦 |