国产乱子伦高清露脸对白-国产精品欧美久久久久天天影视-国产91视频一区-亚洲欧美日产综合在线网-黄视频网站在线看-国产欧美亚洲精品第1页-亚洲www在线-大学生女人三级在线播放-日本在线视频www鲁啊鲁-国产成人精品一区二区仙踪林-69精品欧美一区二区三区-成人欧美亚洲-日本污污网站-中国妞xxxhd露脸偷拍视频-国产精品aⅴ在线观看-精品中文字幕在线

極客小將

您現在的位置是:首頁 » python編程資訊

資訊內容

深入理解Python分布式爬蟲原理

極客小將2021-01-10-
簡介python視頻教程欄目介紹分布式爬蟲原理。免費推薦:python視頻教程首先,我們先來看看,如果是人正常的行為,是如何獲取網頁內容的。(1)打開瀏覽器,輸入URL,打開源網頁(2)選取我們想要的內容,包括標題,作者,摘要,正文等信息(3)存儲到硬盤中上面的三個過程,映射到技術層面上,其實就是:網絡
python視頻教程欄目介紹分布式爬蟲原理。4NQ少兒編程網-Scratch_Python_教程_免費兒童編程學習平臺

4NQ少兒編程網-Scratch_Python_教程_免費兒童編程學習平臺

免費推薦:python視頻教程4NQ少兒編程網-Scratch_Python_教程_免費兒童編程學習平臺

首先,我們先來看看,如果是人正常的行為,是如何獲取網頁內容的。
4NQ少兒編程網-Scratch_Python_教程_免費兒童編程學習平臺

(1)打開瀏覽器,輸入URL,打開源網頁
4NQ少兒編程網-Scratch_Python_教程_免費兒童編程學習平臺

(2)選取我們想要的內容,包括標題,作者,摘要,正文等信息
4NQ少兒編程網-Scratch_Python_教程_免費兒童編程學習平臺

(3)存儲到硬盤中4NQ少兒編程網-Scratch_Python_教程_免費兒童編程學習平臺

上面的三個過程,映射到技術層面上,其實就是:網絡請求,抓取結構化數據,數據存儲。
4NQ少兒編程網-Scratch_Python_教程_免費兒童編程學習平臺

我們使用Python寫一個簡單的程序,實現上面的簡單抓取功能。4NQ少兒編程網-Scratch_Python_教程_免費兒童編程學習平臺

#!/usr/bin/python #-*- coding: utf-8 -*- ''''' Created on 2014-03-16 @author: Kris ''' import urllib2, re, cookielib def httpCrawler(url): ''''' @summary: 網頁抓取 ''' content = httpRequest(url) title = parseHtml(content) saveData(title) def httpRequest(url): ''''' @summary: 網絡請求 ''' try: ret = None SockFile = None request = urllib2.Request(url) request.add_header('User-Agent', 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; SV1; .NET CLR 1.1.4322)') request.add_header('Pragma', 'no-cache') opener = urllib2.build_opener() SockFile = opener.open(request) ret = SockFile.read() finally: if SockFile: SockFile.close() return ret def parseHtml(html): ''''' @summary: 抓取結構化數據 ''' content = None pattern = '<title>([^<]*?)</title>' temp = re.findall(pattern, html) if temp: content = temp[0] return content def saveData(data): ''''' @summary: 數據存儲 ''' f = open('test', 'wb') f.write(data) f.close() if __name__ == '__main__': url = 'http://www.baidu.com' httpCrawler(url)

看著很簡單,是的,它就是一個爬蟲入門的基礎程序。當然,在實現一個采集過程,無非就是上面的幾個基礎步驟。但是實現一個強大的采集過程,你會遇到下面的問題:
4NQ少兒編程網-Scratch_Python_教程_免費兒童編程學習平臺

(1)需要帶著cookie信息訪問,比如大多數的社交化軟件,基本上都是需要用戶登錄之后,才能看到有價值的東西,其實很簡單,我們可以使用Python提供的cookielib模塊,實現每次訪問都帶著源網站給的cookie信息去訪問,這樣只要我們成功模擬了登錄,爬蟲處于登錄狀態,那么我們就可以采集到登錄用戶看到的一切信息了。下面是使用cookie對httpRequest()方法的修改:4NQ少兒編程網-Scratch_Python_教程_免費兒童編程學習平臺

ckjar = cookielib.MozillaCookieJar() cookies = urllib2.HTTPCookieProcessor(ckjar) #定義cookies對象 def httpRequest(url): ''''' @summary: 網絡請求 ''' try: ret = None SockFile = None request = urllib2.Request(url) request.add_header('User-Agent', 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; SV1; .NET CLR 1.1.4322)') request.add_header('Pragma', 'no-cache') opener = urllib2.build_opener(cookies) #傳遞cookies對象 SockFile = opener.open(request) ret = SockFile.read() finally: if SockFile: SockFile.close() return ret

(2)編碼問題。網站目前**多的兩種編碼:utf-8,或者gbk,當我們采集回來源網站編碼和我們數據庫存儲的編碼不一致時,比如,163.com的編碼使用的是gbk,而我們需要存儲的是utf-8編碼的數據,那么我們可以使用Python中提供的encode()和decode()方法進行轉換,比如:4NQ少兒編程網-Scratch_Python_教程_免費兒童編程學習平臺

content = content.decode('gbk', 'ignore') #將gbk編碼轉為unicode編碼 content = content.encode('utf-8', 'ignore') #將unicode編碼轉為utf-8編碼

中間出現了unicode編碼,我們需要轉為中間編碼unicode,才能向gbk或者utf-8轉換。4NQ少兒編程網-Scratch_Python_教程_免費兒童編程學習平臺

(3)網頁中標簽不完整,比如有些源代碼中出現了起始標簽,但沒有結束標簽,HTML標簽不完整,就會影響我們抓取結構化數據,我們可以通過Python的BeautifulSoup模塊,先對源代碼進行清洗,再分析獲取內容。4NQ少兒編程網-Scratch_Python_教程_免費兒童編程學習平臺

(4)某些網站使用JS來生存網頁內容。當我們直接查看源代碼的時候,發現是一堆讓人頭疼的JS代碼??梢允褂胢ozilla、webkit等可以解析瀏覽器的工具包解析js、ajax,雖然速度會稍微慢點。4NQ少兒編程網-Scratch_Python_教程_免費兒童編程學習平臺

(5)圖片是flash形式存在的。當圖片中的內容是文字或者數字組成的字符,那這個就比較好辦,我們只要利用ocr技術,就能實現自動識別了,但是如果是flash鏈接,我們將整個URL存儲起來了。 4NQ少兒編程網-Scratch_Python_教程_免費兒童編程學習平臺

(6)一個網頁出現多個網頁結構的情況,這樣我們如果只是一套抓取規則,那肯定不行,所以需要配置多套模擬進行協助配合抓取。4NQ少兒編程網-Scratch_Python_教程_免費兒童編程學習平臺

(7)應對源網站的監控。抓取別人的東西,畢竟是不太好的事情,所以一般網站都會有針對爬蟲禁止訪問的限制。
一個好的采集系統,應該是,不管我們的目標數據在何處,只要是用戶能夠看到的,我們都能采集回來。所見即所得的無阻攔式采集,無論是否需要登錄的數據都能夠順利采集。大部分有價值的信息,一般都需要登錄才能看到,比如社交網站,為了應對登錄的網站要有模擬用戶登錄的爬蟲系統,才能正常獲取數據。不過社會化網站都希望自己形成一個閉環,不愿意把數據放到站外,這種系統也不會像新聞等內容那么開放的讓人獲取。這些社會化網站大部分會采取一些限制防止機器人爬蟲系統爬取數據,一般一個賬號爬取不了多久就會被檢測出來被禁止訪問了。那是不是我們就不能爬取這些網站的數據呢?肯定不是這樣的,只要社會化網站不關閉網頁訪問,正常人能夠訪問的數據,我們也能訪問。說到底就是模擬人的正常行為操作,專業一點叫“反監控”。4NQ少兒編程網-Scratch_Python_教程_免費兒童編程學習平臺

源網站一般會有下面幾種限制:
4NQ少兒編程網-Scratch_Python_教程_免費兒童編程學習平臺

1、一定時間內單個IP訪問次數,一個正常用戶訪問網站,除非是隨意的點著玩,否則不會在一段持續時間內過快訪問一個網站,持續時間也不會太長。這個問題好辦,我們可以采用大量不規則代理IP形成一個代理池,隨機從代理池中選擇代理,模擬訪問。代理IP有兩種,透明代理和匿名代理。4NQ少兒編程網-Scratch_Python_教程_免費兒童編程學習平臺

2、一定時間內單個賬號訪問次數,如果一個人一天24小時都在訪問一個數據接口,而且速度非常快,那就有可能是機器人了。我們可以采用大量行為正常的賬號,行為正常就是普通人怎么在社交網站上操作,并且單位時間內,訪問URL數目盡量減少,可以在每次訪問中間間隔一段時間,這個時間間隔可以是一個隨機值,即每次訪問完一個URL,隨機隨眠一段時間,再接著訪問下一個URL。
4NQ少兒編程網-Scratch_Python_教程_免費兒童編程學習平臺

如果能把賬號和IP的訪問策略控制好了,基本就沒什么問題了。當然對方網站也會有運維會調整策略,敵我雙方的一場較量,爬蟲必須要能感知到對方的反監控將會對我們有影響,通知管理員及時處理。其實**理想的是能夠通過機器學習,智能的實現反監控對抗,實現不間斷地抓取。
4NQ少兒編程網-Scratch_Python_教程_免費兒童編程學習平臺

下面是本人近期正在設計的一個分布式爬蟲架構圖,如圖1所示:4NQ少兒編程網-Scratch_Python_教程_免費兒童編程學習平臺

4NQ少兒編程網-Scratch_Python_教程_免費兒童編程學習平臺

純屬拙作,初步思路正在實現,正在搭建服務器和客戶端之間的通信,主要使用了Python的Socket模塊實現服務器端和客戶端的通信。如果有興趣,可以單獨和我聯系,共同探討完成更優的方案。

以上就是深入理解Python分布式爬蟲原理的詳細內容,更多請關注少兒編程網其它相關文章!4NQ少兒編程網-Scratch_Python_教程_免費兒童編程學習平臺

預約試聽課

已有385人預約都是免費的,你也試試吧...

国产乱子伦高清露脸对白-国产精品欧美久久久久天天影视-国产91视频一区-亚洲欧美日产综合在线网-黄视频网站在线看-国产欧美亚洲精品第1页-亚洲www在线-大学生女人三级在线播放-日本在线视频www鲁啊鲁-国产成人精品一区二区仙踪林-69精品欧美一区二区三区-成人欧美亚洲-日本污污网站-中国妞xxxhd露脸偷拍视频-国产精品aⅴ在线观看-精品中文字幕在线

        久久午夜夜伦鲁鲁一区二区| 亚洲天堂av免费在线观看| 91热视频在线观看| 91制片厂毛片| 色播五月激情五月| av噜噜在线观看| 日本高清免费观看| 日韩中文在线字幕| 欧美精品久久96人妻无码| 国内外成人激情免费视频| dy888午夜| 日本男女交配视频| 92看片淫黄大片一级| 成人av一级片| 成人性生交免费看| 中文字幕第三区| 欧美亚洲黄色片| 青青在线视频观看| 在线观看的毛片| 三级黄色片免费观看| 国产成人亚洲综合无码| 国产原创中文在线观看| 又色又爽又高潮免费视频国产| 91香蕉视频导航| 午夜在线视频免费观看| 男女日批视频在线观看| 色一情一乱一伦一区二区三区日本| 男女无套免费视频网站动漫| 北条麻妃亚洲一区| 欧美三级一级片| 亚洲国产午夜精品| 日韩欧美一区三区| 午夜激情影院在线观看| 日韩网站在线免费观看| 在线播放av中文字幕| 无码熟妇人妻av在线电影| 已婚少妇美妙人妻系列| 黄色网在线视频| 中文字幕永久视频| 免费不卡av在线| 日韩欧美中文视频| 中文字幕无码不卡免费视频| www国产无套内射com| 久久久国产欧美| 国产一二三在线视频| 在线免费看v片| 自拍偷拍 国产| 中文字幕无码精品亚洲35| 欧洲美女和动交zoz0z| 羞羞的视频在线| 亚洲熟妇av一区二区三区| 国产在线视频综合| 国产欧美自拍视频| 亚洲一区二区福利视频| av在线无限看| 精品一区二区中文字幕| 亚洲色欲久久久综合网东京热| 男女污污视频网站| 亚洲18在线看污www麻豆 | 毛毛毛毛毛毛毛片123| 国产视频一视频二| 无码播放一区二区三区| 日韩欧美不卡在线| 国产一区二区三区小说| 91国在线高清视频| av一区二区三区免费观看| 亚洲成人动漫在线| 成人午夜视频免费观看| 九九久久九九久久| 日韩精品在线中文字幕| 日韩视频免费播放| 国产在线青青草| 日韩精品免费播放| 日本一二区免费| avove在线观看| 给我免费播放片在线观看| 国产日韩欧美精品在线观看| 男的插女的下面视频| 久久精品免费一区二区| 成人性视频欧美一区二区三区| 一区二区三区入口| 黄色a级在线观看| 久久av综合网| 欧美午夜性生活| 91视频福利网| 免费无码毛片一区二三区| 少妇高清精品毛片在线视频| 不卡的av中文字幕| 中文字幕の友人北条麻妃| 日本一道本久久| 五月婷婷之婷婷| 亚洲国产精品成人天堂| 超碰在线97免费| 中文字幕在线乱| 黄色av免费在线播放| 一级片免费在线观看视频| 青青草国产免费| 亚洲一区二区三区观看| 日本一级黄视频| 日本三级黄色网址| 黄色一级视频在线播放| 日本人视频jizz页码69| 亚洲精品蜜桃久久久久久| www.天天射.com| 成人在线免费高清视频| 五月婷婷深爱五月| 91午夜在线观看| 伊人国产精品视频| 99视频在线免费| 久久亚洲精品无码va白人极品| 亚洲欧美日韩一级| 国产成人无码精品久久久性色| 久久精品一卡二卡| 成人一级片网站| 久久国产精品网| 日韩视频一二三| 污污的视频免费观看| 少妇人妻互换不带套| av高清在线免费观看| 国内精品国产三级国产99| 伊人成人222| 亚洲高清在线免费观看| 男的插女的下面视频| 久久久久福利视频| 国产四区在线观看| 五月花丁香婷婷| 亚洲午夜激情影院| 成人综合久久网| 97人人爽人人| 亚洲久久中文字幕| 欧美视频国产视频| 午夜激情影院在线观看| 久久久久久蜜桃一区二区| 超碰在线人人爱| 中文字幕中文在线| 欧美日韩在线免费观看视频| 波多野结衣在线免费观看| 亚洲天堂一区二区在线观看| 91大神免费观看| 无码人妻精品一区二区蜜桃网站| 51自拍视频在线观看| av电影一区二区三区| 久久观看最新视频| www插插插无码免费视频网站| 欧美激情亚洲天堂| 香港三级韩国三级日本三级| 国产综合免费视频| 色婷婷成人在线| 国产农村妇女精品久久| 大桥未久一区二区| 欧洲精品一区二区三区久久| 日本成年人网址| 欧美三级理论片| 一本二本三本亚洲码| 日韩一级性生活片| 成年网站在线播放| 色撸撸在线观看| 少妇av一区二区三区无码| 人人爽人人av| a级黄色片网站| 黄色a级片免费| 18视频在线观看娇喘| 久章草在线视频| 国产女人18毛片| 一道本视频在线观看| 久久亚洲国产成人精品无码区 | 少妇大叫太大太粗太爽了a片小说| 国产精品成人久久电影| 成年人三级黄色片| 97国产在线播放| 青娱乐国产精品视频| www插插插无码视频网站| 日本黄大片一区二区三区| 国产精品999视频| 亚洲av毛片在线观看| av五月天在线| 国产一区二区在线视频播放| 亚洲自拍第三页| 男人的天堂日韩| 国产极品尤物在线| 免费的av在线| 五月六月丁香婷婷| 在线免费视频一区| 国产成人综合一区| 91九色在线观看视频| www.国产在线视频| 中文字幕制服丝袜在线| wwww.国产| 91看片在线免费观看| 欧美丰满熟妇bbbbbb百度| 久久久久久www| 9色porny| 日韩伦理在线免费观看| 国产欧美久久久久| 日本一道在线观看| 特级西西444| 国产性生活免费视频| 黄网站色视频免费观看| 91免费网站视频| 日韩视频在线观看视频|