java 爬虫框架_不知道Python爬虫?这篇文章丢给他(内含框架结构)
前言
爬蟲即網(wǎng)絡(luò)爬蟲,英文是Web Spider。翻譯過來就是網(wǎng)絡(luò)上爬行的蜘蛛,如果把互聯(lián)網(wǎng)看作一張大網(wǎng),那么爬蟲就是在大網(wǎng)上爬來爬去的蜘蛛,碰到想要的食物,就把他抓取出來。
我們?cè)跒g覽器中輸入一個(gè)網(wǎng)址,敲擊回車,看到網(wǎng)站的頁面信息。這就是瀏覽器請(qǐng)求了網(wǎng)站的服務(wù)器,獲取到網(wǎng)絡(luò)資源。那么,爬蟲也相當(dāng)于模擬瀏覽器發(fā)送請(qǐng)求,獲得到HTML代碼。HTML代碼里通常包含了標(biāo)簽和文字信息,我們就從中提取到我們想要的信息。
通常爬蟲是從某個(gè)網(wǎng)站的某個(gè)頁面開始,爬取這個(gè)頁面的內(nèi)容,找到網(wǎng)頁中的其他鏈接地址,然后從這個(gè)地址爬到下一個(gè)頁面,這樣一直不停的爬下去,進(jìn)去批量的抓取信息。那么,我們可以看出網(wǎng)絡(luò)爬蟲就是一個(gè)不停爬取網(wǎng)頁抓取信息的程序。
爬蟲的基本流程
- 發(fā)起請(qǐng)求
- 獲取相應(yīng)內(nèi)容
- 解析內(nèi)容
- 保存數(shù)據(jù)
爬蟲的用途
- 搜索引擎
- 采集數(shù)據(jù)
- 廣告過濾
- 用于數(shù)據(jù)分析
python爬蟲架構(gòu)組成
- URL管理器:管理待爬取的url集合和已爬取的url集合,傳送待爬取的url給網(wǎng)頁下載器;
- 網(wǎng)頁下載器:爬取url對(duì)應(yīng)的網(wǎng)頁,存儲(chǔ)成字符串,傳送給網(wǎng)頁解析器;
- 網(wǎng)頁解析器:解析出有價(jià)值的數(shù)據(jù),存儲(chǔ)下來,同時(shí)補(bǔ)充url到URL管理器。
Python爬蟲工作原理
Python爬蟲通過URL管理器,判斷是否有待爬URL,如果有待爬URL,通過調(diào)度器進(jìn)行傳遞給下載器,下載URL內(nèi)容,并通過調(diào)度器傳送給解析器,解析URL內(nèi)容,并將價(jià)值數(shù)據(jù)和新URL列表通過調(diào)度器傳遞給應(yīng)用程序,并輸出價(jià)值信息的過程。
Python爬蟲常用框架有:
- grab:網(wǎng)絡(luò)爬蟲框架(基于pycurl/multicur);
- scrapy:網(wǎng)絡(luò)爬蟲框架(基于twisted),不支持Python3;
- pyspider:一個(gè)強(qiáng)大的爬蟲系統(tǒng);
- cola:一個(gè)分布式爬蟲框架;
- portia:基于Scrapy的可視化爬蟲;
- restkit:Python的HTTP資源工具包。它可以讓你輕松地訪問HTTP資源,并圍繞它建立的對(duì)象;
- demiurge:基于PyQuery的爬蟲微框架。
Python爬蟲應(yīng)用領(lǐng)域廣泛,在網(wǎng)絡(luò)爬蟲領(lǐng)域處于霸主位置,Scrapy、Request、BeautifuSoap、urlib等框架的應(yīng)用,可以實(shí)現(xiàn)爬行自如的功能,只要您數(shù)據(jù)抓取想法,Python爬蟲均可實(shí)現(xiàn)!
十個(gè)Python爬蟲框架
Scrapy:
Scrapy是一個(gè)為了爬取網(wǎng)站數(shù)據(jù),提取結(jié)構(gòu)性數(shù)據(jù)而編寫的應(yīng)用框架。 可以應(yīng)用在包括數(shù)據(jù)挖掘,信息處理或存儲(chǔ)歷史數(shù)據(jù)等一系列的程序中。它是很強(qiáng)大的爬蟲框架,可以滿足簡(jiǎn)單的頁面爬取,比如可以明確獲知url pattern的情況。用這個(gè)框架可以輕松爬下來如亞馬遜商品信息之類的數(shù)據(jù)。但是對(duì)于稍微復(fù)雜一點(diǎn)的頁面,如weibo的頁面信息,這個(gè)框架就滿足不了需求了。它的特性有:HTML, XML源數(shù)據(jù) 選擇及提取 的內(nèi)置支持;提供了一系列在spider之間共享的可復(fù)用的過濾器(即 Item Loaders),對(duì)智能處理爬取數(shù)據(jù)提供了內(nèi)置支持。
Crawley:
高速爬取對(duì)應(yīng)網(wǎng)站的內(nèi)容,支持關(guān)系和非關(guān)系數(shù)據(jù)庫,數(shù)據(jù)可以導(dǎo)出為JSON、XML等。
Portia:
是一個(gè)開源可視化爬蟲工具,可讓使用者在不需要任何編程知識(shí)的情況下爬取網(wǎng)站!簡(jiǎn)單地注釋自己感興趣的頁面,Portia將創(chuàng)建一個(gè)蜘蛛來從類似的頁面提取數(shù)據(jù)。簡(jiǎn)單來講,它是基于scrapy內(nèi)核;可視化爬取內(nèi)容,不需要任何開發(fā)專業(yè)知識(shí);動(dòng)態(tài)匹配相同模板的內(nèi)容。
newspaper:
可以用來提取新聞、文章和內(nèi)容分析。使用多線程,支持10多種語言等。作者從requests庫的簡(jiǎn)潔與強(qiáng)大得到靈感,使用Python開發(fā)的可用于提取文章內(nèi)容的程序。支持10多種語言并且所有的都是unicode編碼。
Python-goose:
Java寫的文章提取工具。Python-goose框架可提取的信息包括:文章主體內(nèi)容、文章主要圖片、文章中嵌入的任何Youtube/Vimeo視頻、元描述、元標(biāo)簽。
Beautiful Soup:
名氣大,整合了一些常用爬蟲需求。它是一個(gè)可以從HTML或XML文件中提取數(shù)據(jù)的Python庫。它能夠通過你喜歡的轉(zhuǎn)換器實(shí)現(xiàn)慣用的文檔導(dǎo)航,查找,修改文檔的方式.Beautiful Soup會(huì)幫你節(jié)省數(shù)小時(shí)甚至數(shù)天的工作時(shí)間。Beautiful Soup的缺點(diǎn)是不能加載JS。
mechanize:
它的優(yōu)點(diǎn)是可以加載JS。當(dāng)然它也有缺點(diǎn),比如文檔嚴(yán)重缺失。不過通過官方的example以及人肉嘗試的方法,還是勉強(qiáng)能用的。
selenium:
這是一個(gè)調(diào)用瀏覽器的driver,通過這個(gè)庫你可以直接調(diào)用瀏覽器完成某些操作,比如輸入驗(yàn)證碼。Selenium是自動(dòng)化測(cè)試工具,它支持各種瀏覽器,包括 Chrome,Safari,Firefox等主流界面式瀏覽器,如果在這些瀏覽器里面安裝一個(gè) Selenium 的插件,可以方便地實(shí)現(xiàn)Web界面的測(cè)試. Selenium支持瀏覽器驅(qū)動(dòng)。Selenium支持多種語言開發(fā),比如 Java,C,Ruby等等,PhantomJS 用來渲染解析JS,Selenium 用來驅(qū)動(dòng)以及與Python的對(duì)接,Python進(jìn)行后期的處理。
cola:
是一個(gè)分布式的爬蟲框架,對(duì)于用戶來說,只需編寫幾個(gè)特定的函數(shù),而無需關(guān)注分布式運(yùn)行的細(xì)節(jié)。任務(wù)會(huì)自動(dòng)分配到多臺(tái)機(jī)器上,整個(gè)過程對(duì)用戶是透明的。項(xiàng)目整體設(shè)計(jì)有點(diǎn)糟,模塊間耦合度較高。
PySpider:
一個(gè)國人編寫的強(qiáng)大的網(wǎng)絡(luò)爬蟲系統(tǒng)并帶有強(qiáng)大的WebUI。采用Python語言編寫,分布式架構(gòu),支持多種數(shù)據(jù)庫后端,強(qiáng)大的WebUI支持腳本編輯器,任務(wù)監(jiān)視器,項(xiàng)目管理器以及結(jié)果查看器。Python腳本控制,可以用任何你喜歡的html解析包。
點(diǎn)擊右上角關(guān)注小編將會(huì)持續(xù)為您帶來相關(guān)資訊(您的關(guān)注就是小編最大的動(dòng)力!)
總結(jié)
以上是生活随笔為你收集整理的java 爬虫框架_不知道Python爬虫?这篇文章丢给他(内含框架结构)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python函数的使用场景_Python
- 下一篇: python3编码命名规范_Python