![Python之pip安裝,數(shù)值運算,爬蟲實踐_第1頁](http://file3.renrendoc.com/fileroot_temp3/2022-7/3/27bc7068-32b1-4d25-b06f-a3d1d2b8414e/27bc7068-32b1-4d25-b06f-a3d1d2b8414e1.gif)
![Python之pip安裝,數(shù)值運算,爬蟲實踐_第2頁](http://file3.renrendoc.com/fileroot_temp3/2022-7/3/27bc7068-32b1-4d25-b06f-a3d1d2b8414e/27bc7068-32b1-4d25-b06f-a3d1d2b8414e2.gif)
![Python之pip安裝,數(shù)值運算,爬蟲實踐_第3頁](http://file3.renrendoc.com/fileroot_temp3/2022-7/3/27bc7068-32b1-4d25-b06f-a3d1d2b8414e/27bc7068-32b1-4d25-b06f-a3d1d2b8414e3.gif)
![Python之pip安裝,數(shù)值運算,爬蟲實踐_第4頁](http://file3.renrendoc.com/fileroot_temp3/2022-7/3/27bc7068-32b1-4d25-b06f-a3d1d2b8414e/27bc7068-32b1-4d25-b06f-a3d1d2b8414e4.gif)
![Python之pip安裝,數(shù)值運算,爬蟲實踐_第5頁](http://file3.renrendoc.com/fileroot_temp3/2022-7/3/27bc7068-32b1-4d25-b06f-a3d1d2b8414e/27bc7068-32b1-4d25-b06f-a3d1d2b8414e5.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、Pip安裝Os系統(tǒng)期初配置爬蟲總論爬蟲實踐爬蟲指導(dǎo)斐波那契數(shù)列numpy科學(xué)計算Pip 安裝模塊包下載.whl包先pip install wheel之后pip install 包名字.whl 即可安裝某模塊包E.g. C:Python34Scriptspip install F:課程PyOpenGL-3.1.1-cp34-cp34m-win32.whlpython常見模塊命令(os/sys/platform)一、Os Python的標準庫中的os模塊主要涉及普遍的操作系統(tǒng)功能。os.sep 可以取代操作系統(tǒng)特定的路徑分割符。 字符串指示你正在使用的平臺。比如對于Windows,它
2、是nt。os.getcwd()函數(shù)得到當前工作目錄,即當前Python腳本工作的目錄路徑。 os.getenv()和os.putenv()函數(shù)分別用來讀取和設(shè)置環(huán)境變量。 os.listdir()返回指定目錄下的所有文件和目錄名。 os.remove()函數(shù)用來刪除一個文件。 os.system()函數(shù)用來運行shell命令。os.linesep字符串給出當前平臺使用的行終止符。例如,Windows使用rn。os.path.split()函數(shù)返回一個路徑的目錄名和文件名。os.path.isfile()和os.path.isdir()函數(shù)分別檢驗給出的路徑是一個文件還是目錄。os.path.e
3、xiste()函數(shù)用來檢驗給出的路徑是否真地存在os.listdir(dirname):列出dirname下的目錄和文件os.getcwd():獲得當前工作目錄os.curdir:返回但前目錄(.)os.chdir(dirname):改變工作目錄到dirnameos.path.isdir(name):判斷name是不是一個目錄,name不是目錄就返回falseos.path.isfile(name):判斷name是不是一個文件,不存在name也返回falseos.path.exists(name):判斷是否存在文件或目錄nameos.path.getsize(name):獲得文件大小,如果na
4、me是目錄返回0Los.path.abspath(name):獲得絕對路徑os.path.normpath(path):規(guī)范path字符串形式os.path.split(name):分割文件名與目錄(事實上,如果你完全使用目錄,它也會將最后一個目錄作為文件名而分離,同時它不會判斷文件或目錄是否存在)os.path.splitext():分離文件名與擴展名os.path.join(path,name):連接目錄與文件名或目錄os.path.basename(path):返回文件名os.path.dirname(path):返回文件路徑二、Syssys.argv: 實現(xiàn)從程序外部向程序傳遞參數(shù)。s
5、ys.exit(arg): 程序中間的退出,arg=0為正常退出。sys.getdefaultencoding(): 獲取系統(tǒng)當前編碼,一般默認為ascii。sys.setdefaultencoding(): 設(shè)置系統(tǒng)默認編碼,執(zhí)行dir(sys)時不會看到這個方法,在解釋器中執(zhí)行不通過,可以先執(zhí)行reload(sys),在執(zhí)行 setdefaultencoding(utf8),此時將系統(tǒng)默認編碼設(shè)置為utf8。(見設(shè)置系統(tǒng)默認編碼 )sys.getfilesystemencoding(): 獲取文件系統(tǒng)使用編碼方式,Windows下返回mbcs,mac下返回utf-8.sys.path: 獲
6、取指定模塊搜索路徑的字符串集合,可以將寫好的模塊放在得到的某個路徑下,就可以在程序中import時正確找到。sys.platform: 獲取當前系統(tǒng)平臺。sys.stdin,sys.stdout,sys.stderr stdin , stdout , 以及stderr 變量包含與標準I/O 流對應(yīng)的流對象. 如果需要更好地控制輸出,而print 不能滿足你的要求, 它們就是你所需要的. 你也可以替換它們, 這時候你就可以重定向輸出和輸入到其它設(shè)備( device ), 或者以非標準的方式處理它們?nèi)?、Paltformplatform.system() 獲取操作系統(tǒng)類型,windows、linux
7、等platform.platform() 獲取操作系統(tǒng),Darwin-9.8.0-i386-32bitplatform.version() 獲取系統(tǒng)版本信息 6.2.0platform.mac_ver()platform.win32_ver() (post2008Server, 6.2.9200, , uMultiprocessor Free)Summarize基本的爬蟲工作原理簡單爬蟲設(shè)計入門庫: 下載網(wǎng)頁:urllib,Requests 解析網(wǎng)頁:BeautifulSoup 模擬交互,處理JS動態(tài)網(wǎng)頁:Selenium高級爬蟲框架Scrapy分布式爬蟲設(shè)計分布式隊列布隆過濾器 (Bloom
8、 Filter)批量型爬蟲批量型爬蟲有明確的抓取范圍和目標,當爬蟲達到這個設(shè)定的目標后,即停止抓取過程。增量型爬蟲增量型爬蟲會持續(xù)不斷的抓取,對于抓取的網(wǎng)頁,要定期更新。通用的商業(yè)搜索引擎爬蟲基本都屬于此類。垂直型爬蟲垂直型爬蟲關(guān)注特定主題內(nèi)容或者屬于特定行業(yè)的網(wǎng)頁,其他主題或者其他行業(yè)的內(nèi)容不再考慮范圍。爬蟲的分類通用爬蟲框架基本工作流程網(wǎng)絡(luò)爬蟲的基本工作流程如下:1.首先選取一部分精心挑選的種子URL;2.將這些URL放入待抓取URL隊列;3.從待抓取URL隊列中取出待抓取在URL,解析DNS,并且得到主機的ip,并將URL對應(yīng)的網(wǎng)頁下載下來,存儲進已下載網(wǎng)頁庫中。此外,將這些URL放進已
9、抓取URL隊列。4.分析已抓取URL隊列中的URL,分析其中的其他URL,并且將URL放入待抓取URL隊列,從而進入下一個循環(huán)。從爬蟲的角度對互聯(lián)網(wǎng)進行劃分從爬蟲的角度對互聯(lián)網(wǎng)進行劃分對應(yīng)的,可以將互聯(lián)網(wǎng)的所有頁面分為五個部分:1.已下載未過期網(wǎng)頁2.已下載已過期網(wǎng)頁:抓取到的網(wǎng)頁實際上是互聯(lián)網(wǎng)內(nèi)容的一個鏡像與備份,互聯(lián)網(wǎng)是動態(tài)變化的,一部分互聯(lián)網(wǎng)上的內(nèi)容已經(jīng)發(fā)生了變化,這時,這部分抓取到的網(wǎng)頁就已經(jīng)過期了。 3.待下載網(wǎng)頁:也就是待抓取URL隊列中的那些頁面4.可知網(wǎng)頁:還沒有抓取下來,也沒有在待抓取URL隊列中,但是可以通過對已抓取頁面或者待抓取URL對應(yīng)頁面進行分析獲取到的URL,認為是
10、可知網(wǎng)頁。5.還有一部分網(wǎng)頁,爬蟲是無法直接抓取下載的。稱為不可知網(wǎng)頁。抓取策略在爬蟲系統(tǒng)中,待抓取URL隊列是很重要的一部分。待抓取URL隊列中的URL以什么樣的順序排列也是一個很重要的問題,因為這涉及到先抓取那個頁面,后抓取哪個頁面。而決定這些URL排列順序的方法,叫做抓取策略。下面重點介紹幾種常見的抓取策略: 1.深度優(yōu)先遍歷策略 2.寬度優(yōu)先遍歷策略 3.反向鏈接數(shù)策略4.Partial PageRank策略抓取策略depth-first:遍歷的路徑:A-F-G E-H-I B C Dbreadth-first:遍歷的路徑:A-B-C-D-E-F G H I網(wǎng)頁更新策略 互聯(lián)網(wǎng)是實時變
11、化的,具有很強的動態(tài)性。網(wǎng)頁更新策略主要是決定何時更新之前已經(jīng)下載過的頁面。常見的更新策略又以下三種:1.歷史參考策略 顧名思義,根據(jù)頁面以往的歷史更新數(shù)據(jù),預(yù)測該頁面未來何時會發(fā)生變化。一般來說,是通過泊松過程進行建模進行預(yù)測。網(wǎng)頁更新策略 2.用戶體驗策略 盡管搜索引擎針對于某個查詢條件能夠返回數(shù)量巨大的結(jié)果,但是用戶往往只關(guān)注前幾頁結(jié)果。因此,抓取系統(tǒng)可以優(yōu)先更新那些顯示在查詢結(jié)果前幾頁中的網(wǎng)頁,而后再更新那些后面的網(wǎng)頁。這種更新策略也是需要用到歷史信息的。用戶體驗策略保留網(wǎng)頁的多個歷史版本,并且根據(jù)過去每次內(nèi)容變化對搜索質(zhì)量的影響,得出一個平均值,用這個值作為決定何時重新抓取的依據(jù)網(wǎng)頁
12、更新策略 3.聚類抽樣策略前面提到的兩種更新策略都有一個前提:需要網(wǎng)頁的歷史信息。這樣就存在兩個問題:第一,系統(tǒng)要是為每個系統(tǒng)保存多個版本的歷史信息,無疑增加了很多的系統(tǒng)負擔;第二,要是新的網(wǎng)頁完全沒有歷史信息,就無法確定更新策略。這種策略認為,網(wǎng)頁具有很多屬性,類似屬性的網(wǎng)頁,可以認為其更新頻率也是類似的。要計算某一個類別網(wǎng)頁的更新頻率,只需要對這一類網(wǎng)頁抽樣,以他們的更新周期作為整個類別的更新周期。分布式抓取系統(tǒng)結(jié)構(gòu) 一般來說,抓取系統(tǒng)需要面對的是整個互聯(lián)網(wǎng)上數(shù)以億計的網(wǎng)頁。單個抓取程序不可能完成這樣的任務(wù)。往往需要多個抓取程序一起來處理。一般來說抓取系統(tǒng)往往是一個分布式的三層結(jié)構(gòu)。如圖所
13、示:分布式抓取系統(tǒng)結(jié)構(gòu) 最下一層是分布在不同地理位置的數(shù)據(jù)中心,在每個數(shù)據(jù)中心里有若干臺抓取服務(wù)器,而每臺抓取服務(wù)器上可能部署了若干套爬蟲程序。這就構(gòu)成了一個基本的分布式抓取系統(tǒng)。對于一個數(shù)據(jù)中心內(nèi)的不同抓去服務(wù)器,協(xié)同工作的方式有幾種: 1.主從式(Master-Slave) 2.對等式(Peer to Peer)主從式抓取系統(tǒng)結(jié)構(gòu)主從式抓取系統(tǒng)結(jié)構(gòu)對于主從式而言,有一臺專門的Master服務(wù)器來維護待抓取URL隊列,它負責每次將URL分發(fā)到不同的Slave服務(wù)器,而Slave服務(wù)器則負責實際的網(wǎng)頁下載工作。Master服務(wù)器除了維護待抓取URL隊列以及分發(fā)URL之外,還要負責調(diào)解各個Sla
14、ve服務(wù)器的負載情況。以免某些Slave服務(wù)器過于清閑或者勞累。這種模式下,Master往往容易成為系統(tǒng)瓶頸。對等式抓取系統(tǒng)結(jié)構(gòu)對等式抓取系統(tǒng)結(jié)構(gòu) 在這種模式下,所有的抓取服務(wù)器在分工上沒有不同。每一臺抓取服務(wù)器都可以從待抓取在URL隊列中獲取URL,然后對該URL的主域名的hash值H,然后計算H mod m(其中m是服務(wù)器的數(shù)量,以上圖為例,m為3),計算得到的數(shù)就是處理該URL的主機編號。這種模式有一個問題,當有一臺服務(wù)器死機或者添加新的服務(wù)器,那么所有URL的哈希求余的結(jié)果就都要變化。也就是說,這種方式的擴展性不佳。對等式抓取系統(tǒng)結(jié)構(gòu) 在這種模式下,所有的抓取服務(wù)器在分工上沒有不同。每
15、一臺抓取服務(wù)器都可以從待抓取在URL隊列中獲取URL,然后對該URL的主域名的hash值H,然后計算H mod m(其中m是服務(wù)器的數(shù)量,以上圖為例,m為3),計算得到的數(shù)就是處理該URL的主機編號。這種模式有一個問題,當有一臺服務(wù)器死機或者添加新的服務(wù)器,那么所有URL的哈希求余的結(jié)果就都要變化。也就是說,這種方式的擴展性不佳。布隆過濾器在構(gòu)建分布式爬蟲時抓取海量網(wǎng)頁時,通常需要維護一個很長的已抓取URL集合,避免重復(fù)抓取已經(jīng)下載過的網(wǎng)頁。然而即使使用哈希表來構(gòu)建這個集合,依然面臨著沖突和內(nèi)存利用率不高的缺點。通常的判重做法是使用Bloom Filter(布隆過濾器)來進行已抓取網(wǎng)頁查找。布
16、隆過濾器布隆布隆過濾器過濾器(Bloom Filter)是由布?。˙urton Howard Bloom)在1970年提出的。它實際上是由一個很長的二進制向量和一系列無關(guān)的哈希函數(shù)組成,布隆過濾器可以用于檢索一個元素是否在一個集合中。它的優(yōu)點是空間效率和查詢時間都遠遠超過一般的算法,缺點是有一定的誤識別率和刪除困難。即Bloom Filter報告某一元素存在于某集合中,但是實際上該元素并不在集合中,但是沒有識別錯誤的情形,如果某個元素在該集合中,那么Bloom Filter 是不會報告該元素不在集合中的,所以不會漏報。布隆過濾器相比于其它的數(shù)據(jù)結(jié)構(gòu),布隆過濾器在空間和時間方面都有巨大的優(yōu)勢。布
17、隆過濾器存儲空間和插入/查詢時間都是常數(shù)。另外, Hash 函數(shù)相互之間沒有關(guān)系,方便由硬件并行實現(xiàn)。布隆過濾器不需要存儲元素本身,在某些對保密要求非常嚴格的場合有優(yōu)勢。Python高級爬蟲框架ScrapyScrapy,Python開發(fā)的一個快速,高層次的屏幕抓取和web抓取框架,用于抓取web站點并從頁面中提取結(jié)構(gòu)化的數(shù)據(jù)。Scrapy用途廣泛,可以用于數(shù)據(jù)挖掘、監(jiān)測和自動化測試。Scrapy吸引人的地方在于它是一個框架,任何人都可以根據(jù)需求方便的修改。它也提供了多種類型爬蟲的基類,如BaseSpider、sitemap爬蟲等,最新版本又提供了web2.0爬蟲的支持原來的代碼我們要改的指定一
18、個文件來存放爬出來的信息,這些信息會以txt格式來保存。f=open(D:/dianping/+str(time.strftime(ISOTIMEFORMAT) +.txt,a+)這個就是多IP爬蟲,一個IP很容易就被發(fā)現(xiàn)并禁止這個就是多客戶端爬蟲,單一個的客戶端很容易被發(fā)現(xiàn)并禁掉import urllib2,urlliburllib2模塊定義的函數(shù)和類幫助打開url(主要是HTTP)在一個復(fù)雜的世界-基本和簡要身份驗證,重定向,cookie和更多。 import re 正則表達式import time 提供各種時間函數(shù)import string 字符串處理的函數(shù)improt request
19、與urlib差不多,更簡單 import socket套接字套接字是為特定網(wǎng)絡(luò)協(xié)議(例如TCP/IP,ICMP/IP,UDP/IP等)套件對上的網(wǎng)絡(luò)應(yīng)用程序提供者提供當前可移植標準的對象。它們允許程序接受并進行連接,如發(fā)送和接受數(shù)據(jù)。為了建立通信通道,網(wǎng)絡(luò)通信的每個端點擁有一個套接字對象極為重要。Python中的random模塊用于生成隨機數(shù)。 import user_agents 這個比較特殊,是人為定義的庫,這個庫存儲了許多IP或是對點評網(wǎng)的訪問方式,目的就是隨機選一個IP訪問以避免網(wǎng)站對單一IP登陸的封殺。timeout = 60 socket.setdefaulttimeout(tim
20、eout) #設(shè)置 HTTP 或 Socket 訪問超時,來防止爬蟲抓取某個頁面時間過長。(這個時間用秒 #來算)def get_status(url): r = requests.get(url, allow_redirects = False)# allow_redirects = False不允許間接地訪問,用request庫中的get函數(shù)來抓取URL return r.status_code#獲取網(wǎng)頁內(nèi)容def content_get(url): try:#“#”是注釋的意思 # proxy_ip =random.choice(proxyIP.proxy_list) # print p
21、roxy_ip # proxy_support = urllib2.ProxyHandler(proxy_ip) # opener = urllib2.build_opener(proxy_support,urllib2.HTTPHandler) # urllib2.install_opener(opener) req = urllib2.Request(url)#這個類是一個抽象的URL請求。 user_agent = random.choice(user_agents.user_agents) #在剛才的user_agents里面隨機找一個登錄方法 req.add_header(User-
22、Agent,user_agent) req.add_header(Referrer, url) print user_agent#python 的輸出函數(shù)是print page = urllib2.urlopen(req) content = page.read() page.close() return content#正常的話就用content來保存讀出的結(jié)果并且一定要關(guān)閉文件并返回content except UnicodeDecodeError as e: print(-UnicodeDecodeError url:,url) return #解碼錯誤則輸出并返回空 except ur
23、llib2.HTTPError as e: print(-HTTPError url:,url) return #網(wǎng)站禁止爬蟲則輸出并返回空 except socket.timeout as e: print(-socket timout:,url) return #抓取超時則輸出并返回空 except urllib2.URLError, e: if hasattr(e, reason): print Failed to reach a server. print Reason: , e.reason return elif hasattr(e, code):#elif相當于else if p
24、rint The server couldnt fulfill the request. print Error code: , e.code return except Exception, e: if DEBUG: print e return # if DEBUG 如果出錯了print e return #獲取店鋪的urldef get_shopurl(url): content = content_get(url) #尋找店鋪的實際url,例如/shop/6123204,用正則表達式 #find_shopurl = pile(rs*s*a href=(.*?) class=BL title=.*?,re.DOTALL) find_shopurl = pile(rs*s*) re_next = find_next.search(content) return re_pile是將字符串編譯為用于python正則式的模式,字符前的r表示是純字符,這樣就不需要對元字符進行兩次轉(zhuǎn)義。re.findall返回的是字符串中符合results_pat的列表,由于在results_pat中使用了子表達式,所以results存儲的就是子表達式所匹配的內(nèi)容,即與之間的內(nèi)容。斐波那契數(shù)列Fib()Fib(
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 人力資源招聘居間合同格式
- 文創(chuàng)園區(qū)衛(wèi)生間翻新合同
- 牛棚承包合同
- 化工產(chǎn)品購銷合同
- 電商承包合同協(xié)議書
- 玩具銷售合同范例
- 喝啤酒大賽比賽規(guī)則
- 場地租賃合同協(xié)議書
- 統(tǒng)編版初中語文七年級上冊第九課《從百草園到三味書屋》聽評課記錄
- 企業(yè)戰(zhàn)略規(guī)劃知識管理系統(tǒng)作業(yè)指導(dǎo)書
- 2024新版《藥品管理法》培訓(xùn)課件
- 浙江省杭州市2024年中考英語真題(含答案)
- 《陸上風(fēng)電場工程設(shè)計概算編制規(guī)定及費用標準》(NB-T 31011-2019)
- 扁鋼理論重量表
- 中央企業(yè)商業(yè)秘密安全保護技術(shù)指引2015版
- 人教版初中英語八年級下冊 單詞默寫表 漢譯英
- 《靜脈治療護理技術(shù)操作規(guī)范》考核試題及答案(共140題)
- 人事測評理論與方法-課件
- 最新卷宗的整理、裝訂(全)課件
- 信訪事項受理、辦理、復(fù)查、復(fù)核、聽證程序課件
- 【北京】施工現(xiàn)場安全生產(chǎn)標準化管理圖集
評論
0/150
提交評論