天才教育網合作機構 > 程序開發(fā)培訓機構 > 人工智能培訓機構 >

天才領路者

歡迎您!
朋友圈

400-850-8622

全國統(tǒng)一學習專線 9:00-21:00

位置:程序開發(fā)培訓資訊 > 人工智能培訓資訊 > 終于知道python爬蟲是什么意思

終于知道python爬蟲是什么意思

日期:2019-08-16 17:39:39     瀏覽:1150    來源:天才領路者
核心提示:爬蟲過程中也會經歷一些絕望啊,比如被網站封IP、比如各種奇怪的驗證碼、userAgent訪問限制、各種動態(tài)加載等等。下面是小編為您整理的關于python爬蟲是什么意思,希望對你有所幫助。

爬蟲過程中也會經歷一些絕望啊,比如被網站封IP、比如各種奇怪的驗證碼、userAgent訪問限制、各種動態(tài)加載等等。下面是小編為您整理的關于python爬蟲是什么意思,希望對你有所幫助。

python爬蟲是什么意思

?

python爬蟲是什么意思 ?

python爬蟲即網絡爬蟲,網絡爬蟲是一種程序,主要用于搜索引擎,它將一個網站的所有內容與鏈接進行閱讀,并建立相關的全文索引到數(shù)據庫中,然后跳到另一個網站.樣子好像一只大蜘蛛. ?

當人們在網絡上(如google)搜索關鍵字時,其實就是比對數(shù)據庫中的內容,找出與用戶相符合的.網絡爬蟲程序的質量決定了搜索引擎的能力,如google的搜索引擎明顯要比百度好,就是因為它的網絡爬蟲程序高效,編程結構好. ?

網絡爬蟲原理 ?

Web網絡爬蟲系統(tǒng)的功能是下載網頁數(shù)據,為搜索引擎系統(tǒng)提供數(shù)據來源。很多大型的網絡搜索引擎系統(tǒng)都被稱為基于 Web數(shù)據采集的搜索引擎系統(tǒng),比如 Google、Baidu。由此可見Web 網絡爬蟲系統(tǒng)在搜索引擎中的重要性。網頁中除了包含供用戶閱讀的文字信息外,還包含一些超鏈接信息。Web網絡爬蟲系統(tǒng)正是通過網頁中的超連接信息不斷獲得網絡上的其它網頁。正是因為這種采集過程像一個爬蟲或者蜘蛛在網絡上漫游,所以它才被稱為網絡爬蟲系統(tǒng)或者網絡蜘蛛系統(tǒng),在英文中稱為Spider或者Crawler。 ?

Web網絡爬蟲系統(tǒng)一般會選擇一些比較重要的、出度(網頁中鏈出超鏈接數(shù))較大的網站的URL作為種子URL集合。網絡爬蟲系統(tǒng)以這些種子集合作為初始URL,開始數(shù)據的抓取。因為網頁中含有鏈接信息,通過已有網頁的 URL會得到一些新的 URL,可以把網頁之間的指向結構視為一個森林,每個種子URL對應的網頁是森林中的一棵樹的根節(jié)點。這樣,Web網絡爬蟲系統(tǒng)就可以根據廣度優(yōu)先算法或者深度優(yōu)先算法遍歷所有的網頁。由于深度優(yōu)先搜索算法可能會使爬蟲系統(tǒng)陷入一個網站內部,不利于搜索比較靠近網站首頁的網頁信息,因此一般采用廣度優(yōu)先搜索算法采集網頁。Web網絡爬蟲系統(tǒng)首先將種子URL放入下載隊列,然后簡單地從隊首取出一個URL下載其對應的網頁。得到網頁的內容將其存儲后,再經過解析網頁中的鏈接信息可以得到一些新的URL,將這些URL加入下載隊列。然后再取出一個URL,對其對應的網頁進行下載,然后再解析,如此反復進行,直到遍歷了整個網絡或者滿足某種條件后才會停止下來。 ?

學習 Python 包并實現(xiàn)基本的爬蟲過程 ?

大部分爬蟲都是按“發(fā)送請求——獲得頁面——解析頁面——抽取并儲存內容”這樣的流程來進行,這其實也是模擬了我們使用瀏覽器獲取網頁信息的過程。 ?

Python中爬蟲相關的包很多:urllib、requests、bs4、scrapy、pyspider 等,建議從requests+Xpath 開始,requests 負責連接網站,返回網頁,Xpath 用于解析網頁,便于抽取數(shù)據。 ?

如果你用過 BeautifulSoup,會發(fā)現(xiàn) Xpath 要省事不少,一層一層檢查元素代碼的工作,全都省略了。這樣下來基本套路都差不多,一般的靜態(tài)網站根本不在話下,豆瓣、糗事百科、騰訊新聞等基本上都可以上手了。 ?

當然如果你需要爬取異步加載的網站,可以學習瀏覽器抓包分析真實請求或者學習Selenium來實現(xiàn)自動化,這樣,知乎、時光網、貓途鷹這些動態(tài)的網站也可以迎刃而解。 ?

學習數(shù)據庫基礎,應對大規(guī)模數(shù)據存儲 ?

爬回來的數(shù)據量小的時候,你可以用文檔的形式來存儲,一旦數(shù)據量大了,這就有點行不通了。所以掌握一種數(shù)據庫是必須的,學習目前比較主流的 MongoDB 就OK。 ?

MongoDB 可以方便你去存儲一些非結構化的數(shù)據,比如各種評論的文本,圖片的鏈接等等。你也可以利用PyMongo,更方便地在Python中操作MongoDB。 ?

因為這里要用到的數(shù)據庫知識其實非常簡單,主要是數(shù)據如何入庫、如何進行提取,在需要的時候再學習就行。 ?

網絡爬蟲的基本工作流程如下: ?

1.首先選取一部分精心挑選的種子URL; ?

2.將這些URL放入待抓取URL隊列; ?

3.從待抓取URL隊列中取出待抓取在URL,解析DNS,并且得到主機的ip,并將URL對應的網頁下載下來,存儲進已下載網頁庫中。此外,將這些URL放進已抓取URL隊列;

?

4.分析已抓取URL隊列中的URL,分析其中的其他URL,并且將URL放入待抓取URL隊列,從而進入下一個循環(huán)。 ?

2.3 抓取策略 ?

在爬蟲系統(tǒng)中,待抓取URL隊列是很重要的一部分。待抓取URL隊列中的URL以什么樣的順序排列也是一個很重要的問題,因為這涉及到先抓取那個頁面,后抓取哪個頁面。而決定這些URL排列順序的方法,叫做抓取策略。下面重點介紹幾種常見的抓取策略: ?

2.3.1 深度優(yōu)先遍歷策略 ?

深度優(yōu)先遍歷策略是指網絡爬蟲會從起始頁開始,一個鏈接一個鏈接跟蹤下去,處理完這條線路之后再轉入下一個起始頁,繼續(xù)跟蹤鏈接。我們以下面的圖為例: ?

遍歷的路徑:A-F-G E-H-I B C D ?

2.3.2 寬度優(yōu)先遍歷策略 ?

寬度優(yōu)先遍歷策略的基本思路是,將新下載網頁中發(fā)現(xiàn)的鏈接直接**待抓取URL隊列的末尾。也就是指網絡爬蟲會先抓取起始網頁中鏈接的所有網頁,然后再選擇其中的一個鏈接網頁,繼續(xù)抓取在此網頁中鏈接的所有網頁。還是以上面的圖為例: ?

遍歷路徑:A-B-C-D-E-F G H I ?

2.3.3 反向鏈接數(shù)策略 ?

反向鏈接數(shù)是指一個網頁被其他網頁鏈接指向的數(shù)量。反向鏈接數(shù)表示的是一個網頁的內容受到其他人的推薦的程度。因此,很多時候搜索引擎的抓取系統(tǒng)會使用這個指標來評價網頁的重要程度,從而決定不同網頁的抓取先后順序。 ?

在真實的網絡環(huán)境中,由于廣告鏈接、作弊鏈接的存在,反向鏈接數(shù)不能完全等他我那個也的重要程度。因此,搜索引擎往往考慮一些可靠的反向鏈接數(shù)。 ?

2.3.4 Partial PageRank策略 ?

Partial PageRank算法借鑒了PageRank算法的思想:對于已經下載的網頁,連同待抓取URL隊列中的URL,形成網頁集合,計算每個頁面的PageRank值,計算完之后,將待抓取URL隊列中的URL按照PageRank值的大小排列,并按照該順序抓取頁面。 ?

如果每次抓取一個頁面,就重新計算PageRank值,一種折中方案是:每抓取K個頁面后,重新計算一次PageRank值。但是這種情況還會有一個問題:對于已經下載下來的頁面中分析出的鏈接,也就是我們之前提到的未知網頁那一部分,暫時是沒有PageRank值的。為了解決這個問題,會給這些頁面一個臨時的PageRank值:將這個網頁所有入鏈傳遞進來的PageRank值進行匯總,這樣就形成了該未知頁面的PageRank值,從而參與排序。 ?

2.3.5 OPIC策略策略 ?

該算法實際上也是對頁面進行一個重要性打分。在算法開始前,給所有頁面一個相同的初始現(xiàn)金(cash)。當下載了某個頁面P之后,將P的現(xiàn)金分攤給所有從P中分析出的鏈接,并且將P的現(xiàn)金清空。對于待抓取URL隊列中的所有頁面按照現(xiàn)金數(shù)進行排序。 ?

2.3.6 大站優(yōu)先策略 ?

對于待抓取URL隊列中的所有網頁,根據所屬的網站進行分類。對于待下載頁面數(shù)多的網站,優(yōu)先下載。這個策略也因此叫做大站優(yōu)先策略。 ?

如果本頁不是您要找的課程,您也可以百度查找一下: