摘要:一時(shí)心血來(lái)潮,于是當(dāng)時(shí)想,如果拿來(lái)分析知乎這個(gè)網(wǎng)站,會(huì)有什么效果呢。知乎并沒(méi)有公開(kāi),只能采取爬蟲(chóng)手段。如此,大概率會(huì)觸發(fā)知乎反爬蟲(chóng)系統(tǒng),所以采取以下方法來(lái)回避這個(gè)問(wèn)題代理池。但是,很多情況下知乎還是能通過(guò)你的請(qǐng)求得到你的真實(shí)。。
網(wǎng)站地址books.bigfacewo.com
最近工作去了,感覺(jué)人也變懶了,一直想寫(xiě)一些關(guān)于這個(gè)網(wǎng)站東西分享出來(lái)。慢慢寫(xiě)吧。
前情提要:對(duì)于大神來(lái)說(shuō),這個(gè)網(wǎng)站使用的技術(shù)都是小兒科啦。不過(guò),我想還是有朋友有這個(gè)需求的。這篇文章的內(nèi)容不一定都是準(zhǔn)確的,用的方法也不是最好的,不過(guò)我始終相信一句話(huà)——兼聽(tīng)者明,偏聽(tīng)則暗。所以看這篇文章的朋友,希望你能帶入自己的思考,同時(shí)更希望能夠帶給你一些東西。
好了,廢話(huà)不多說(shuō)了。
網(wǎng)站是參考了一個(gè)外文網(wǎng)站。一時(shí)心血來(lái)潮,于是當(dāng)時(shí)想,如果拿來(lái)分析知乎這個(gè)網(wǎng)站,會(huì)有什么效果呢。
有一些不一樣的地方是stackoverflow這個(gè)網(wǎng)站開(kāi)放了api,所以拿到數(shù)據(jù)是很方便的。知乎并沒(méi)有公開(kāi)api,只能采取爬蟲(chóng)手段。
所以,很自然地,流程大致分為四個(gè)步驟:
數(shù)據(jù)獲取
數(shù)據(jù)分析
建站數(shù)據(jù)準(zhǔn)備
建站
一、數(shù)據(jù)獲取寫(xiě)爬蟲(chóng)要考慮的一些問(wèn)題:
可靠性。當(dāng)遇到程序錯(cuò)誤或者一些不可抗力因素如斷電等造成的程序停止,如何從停止的時(shí)刻開(kāi)始繼續(xù)爬取;或者說(shuō)得設(shè)計(jì)一個(gè)狀態(tài),該狀態(tài)保存了已經(jīng)抓取數(shù)據(jù)的相關(guān)信息,下次抓取任務(wù)會(huì)忽略已經(jīng)抓取的信息(這不是廢話(huà)嘛,哈哈),還有一些需要考慮的問(wèn)題:
模擬登陸(后續(xù)填坑)
速度。假設(shè)一秒鐘爬取1條數(shù)據(jù),那么600條一個(gè)小時(shí),6000000條就需要10000個(gè)小時(shí),大概要一年多。這是不能接受的一個(gè)速度,單機(jī)多線(xiàn)程抓取10條每秒還是可以接受的。如此,大概率會(huì)觸發(fā)知乎反爬蟲(chóng)系統(tǒng),所以采取以下方法來(lái)回避這個(gè)問(wèn)題:
代理池 。可以找一些免費(fèi)的代理網(wǎng)站,如西刺,爬一些ip下來(lái)用,當(dāng)然這需要設(shè)計(jì)一個(gè)系統(tǒng)或服務(wù),該服務(wù)不斷地去獲取代理ip,然后驗(yàn)證是否可用,再存起來(lái)備用。當(dāng)遇到爬蟲(chóng)驗(yàn)證頁(yè)面時(shí)應(yīng)該將該ip移除或者標(biāo)記為暫時(shí)不可用。但是,很多情況下知乎還是能通過(guò)你的請(qǐng)求得到你的真實(shí)ip。
Cookie。
重新?lián)芴?hào)。這個(gè)簡(jiǎn)單而且非常可行,如果是單條寬帶,重新?lián)芴?hào)會(huì)造成短時(shí)間的爬取停止。
優(yōu)先級(jí)。其實(shí),并不是每條數(shù)據(jù)都需要的或者說(shuō)包含了有效信息,如果對(duì)要抓取的數(shù)據(jù)有一定了解,那么我們可以提取一些特征,優(yōu)先抓取這部分?jǐn)?shù)據(jù)。事實(shí)上我也這么做的,這樣能夠最大限度地節(jié)省時(shí)間。
當(dāng)我接觸Python之后,就決定用它來(lái)寫(xiě)爬蟲(chóng)了,因?yàn)閷?shí)在是太方便了!
二、數(shù)據(jù)分析從數(shù)據(jù)中提取書(shū)籍信息,有兩種辦法:
提取書(shū)名號(hào)中的內(nèi)容。
先建立書(shū)籍信息庫(kù),再做匹配。
第二種辦法可以做到更精確,但是建立書(shū)籍?dāng)?shù)據(jù)庫(kù)也頗費(fèi)時(shí)間。所以采用了第一種方法。實(shí)際上知乎上只要提到書(shū)籍幾乎都會(huì)帶上書(shū)名號(hào),或者有一些政治隱喻不能提的,當(dāng)然我們也不需要這類(lèi)書(shū)的信息。
同一本書(shū)在每個(gè)回答中最多只能出現(xiàn)一次,將數(shù)據(jù)匯總后,得到“標(biāo)簽:書(shū)名:提到次數(shù)”的這樣的一個(gè)文本。
三、建站數(shù)據(jù)準(zhǔn)備按照我的需求,應(yīng)該建立以下三張表:
標(biāo)簽表:存放該書(shū)所對(duì)應(yīng)標(biāo)簽,多對(duì)多的關(guān)系。
書(shū)籍表:存放書(shū)籍的信息,以及該書(shū)的提到總次數(shù)。
標(biāo)簽-書(shū)籍對(duì)應(yīng)關(guān)系表:存放該標(biāo)簽下該書(shū)籍被提到的次數(shù)信息。
將步驟二得到的文本,導(dǎo)入到數(shù)據(jù)庫(kù)中去。
為了得到書(shū)籍的詳細(xì)信息,此時(shí)還需要將書(shū)名放到一些書(shū)籍網(wǎng)站,如我去了亞馬遜進(jìn)行搜索,然后將得到的信息寫(xiě)到數(shù)據(jù)庫(kù)中去,原理同步驟一。當(dāng)然,這里也引入了一些誤差,由于是模糊匹配,導(dǎo)致一些書(shū)籍的信息錯(cuò)誤(后面人工審核了一部分?jǐn)?shù)據(jù))。
到此,建站數(shù)據(jù)準(zhǔn)備好了。
四、建站建站就比較簡(jiǎn)單了,后臺(tái)用Restful風(fēng)格把接口寫(xiě)好,前端就可以使用了。
使用Vue構(gòu)建了一版單頁(yè)應(yīng)用,但是搜索引擎不能抓取,于是又做了一版ssr的,使用了Nuxt.js。
網(wǎng)站差不多4天就寫(xiě)好了,大部分時(shí)間都花在了步驟一和步驟二上了。所以,如果你也想做一個(gè)類(lèi)似網(wǎng)站,不妨先從寫(xiě)爬蟲(chóng)開(kāi)始。
還想做的事情:
情感分析。一本書(shū)被提到,其評(píng)價(jià)有可能是正面的也有可能是負(fù)面的,希望加入一個(gè)情感分析的功能,然后加權(quán)到最終結(jié)果。
提高書(shū)籍信息準(zhǔn)確度。 本來(lái)可以申請(qǐng)亞馬遜或者淘寶之類(lèi)的網(wǎng)站的api,通過(guò)api可以獲取商品數(shù)據(jù),可以利用來(lái)查詢(xún)書(shū)籍信息,但是申請(qǐng)很麻煩,最后還是采用了爬蟲(chóng)+人工的方式。
移動(dòng)端優(yōu)化。 目前網(wǎng)站的排版在移動(dòng)端表現(xiàn)不是太好。
總結(jié)綜上,寫(xiě)的比較簡(jiǎn)略,當(dāng)然,不具備直接可操作性,因?yàn)椴簧婕暗骄唧w的代碼。但是,我想表達(dá)的是,整個(gè)流程就在這里,你可以用你熟悉的編程語(yǔ)言或者工具來(lái)實(shí)現(xiàn)它,就算不會(huì)Python,你仍然可以利用Java、C#來(lái)寫(xiě)爬蟲(chóng)或者做分析;還有一個(gè)重要的原則是,盡量復(fù)用別人的東西,如python爬蟲(chóng)相關(guān)的庫(kù)功能非常強(qiáng)大,直接拿來(lái)用就可以,同理,使用Java,你需要去調(diào)查該語(yǔ)言相關(guān)的庫(kù),哪些能實(shí)現(xiàn)你的目的,然后去使用它吧。
另外,一些省略的內(nèi)容,將后續(xù)補(bǔ)充。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/68374.html
摘要:一時(shí)心血來(lái)潮,于是當(dāng)時(shí)想,如果拿來(lái)分析知乎這個(gè)網(wǎng)站,會(huì)有什么效果呢。知乎并沒(méi)有公開(kāi),只能采取爬蟲(chóng)手段。如此,大概率會(huì)觸發(fā)知乎反爬蟲(chóng)系統(tǒng),所以采取以下方法來(lái)回避這個(gè)問(wèn)題代理池。但是,很多情況下知乎還是能通過(guò)你的請(qǐng)求得到你的真實(shí)。。 網(wǎng)站地址books.bigfacewo.com最近工作去了,感覺(jué)人也變懶了,一直想寫(xiě)一些關(guān)于這個(gè)網(wǎng)站東西分享出來(lái)。慢慢寫(xiě)吧。前情提要:對(duì)于大神來(lái)說(shuō),這個(gè)網(wǎng)站使...
摘要:一時(shí)心血來(lái)潮,于是當(dāng)時(shí)想,如果拿來(lái)分析知乎這個(gè)網(wǎng)站,會(huì)有什么效果呢。知乎并沒(méi)有公開(kāi),只能采取爬蟲(chóng)手段。如此,大概率會(huì)觸發(fā)知乎反爬蟲(chóng)系統(tǒng),所以采取以下方法來(lái)回避這個(gè)問(wèn)題代理池。但是,很多情況下知乎還是能通過(guò)你的請(qǐng)求得到你的真實(shí)。。 網(wǎng)站地址books.bigfacewo.com最近工作去了,感覺(jué)人也變懶了,一直想寫(xiě)一些關(guān)于這個(gè)網(wǎng)站東西分享出來(lái)。慢慢寫(xiě)吧。前情提要:對(duì)于大神來(lái)說(shuō),這個(gè)網(wǎng)站使...
摘要:一時(shí)心血來(lái)潮,于是當(dāng)時(shí)想,如果拿來(lái)分析知乎這個(gè)網(wǎng)站,會(huì)有什么效果呢。知乎并沒(méi)有公開(kāi),只能采取爬蟲(chóng)手段。如此,大概率會(huì)觸發(fā)知乎反爬蟲(chóng)系統(tǒng),所以采取以下方法來(lái)回避這個(gè)問(wèn)題代理池。但是,很多情況下知乎還是能通過(guò)你的請(qǐng)求得到你的真實(shí)。。 網(wǎng)站地址books.bigfacewo.com最近工作去了,感覺(jué)人也變懶了,一直想寫(xiě)一些關(guān)于這個(gè)網(wǎng)站東西分享出來(lái)。慢慢寫(xiě)吧。前情提要:對(duì)于大神來(lái)說(shuō),這個(gè)網(wǎng)站使...
摘要:我們分析了大量知乎精華回答,將里面被提到的書(shū)籍提取出來(lái),按照被提到次數(shù)做成了一個(gè)書(shū)籍推薦網(wǎng)站。網(wǎng)站內(nèi)容對(duì)程序員較為友好。 我們分析了大量知乎精華回答,將里面被提到的書(shū)籍提取出來(lái),按照被提到次數(shù)做成了一個(gè)書(shū)籍推薦網(wǎng)站。被提到即是價(jià)值。網(wǎng)站內(nèi)容對(duì)程序員較為友好。地址:http://books.bigfacewo.com
摘要:我們分析了大量知乎精華回答,將里面被提到的書(shū)籍提取出來(lái),按照被提到次數(shù)做成了一個(gè)書(shū)籍推薦網(wǎng)站。網(wǎng)站內(nèi)容對(duì)程序員較為友好。 我們分析了大量知乎精華回答,將里面被提到的書(shū)籍提取出來(lái),按照被提到次數(shù)做成了一個(gè)書(shū)籍推薦網(wǎng)站。被提到即是價(jià)值。網(wǎng)站內(nèi)容對(duì)程序員較為友好。地址:http://books.bigfacewo.com
閱讀 2522·2023-04-25 17:27
閱讀 1832·2019-08-30 15:54
閱讀 2376·2019-08-30 13:06
閱讀 2986·2019-08-30 11:04
閱讀 754·2019-08-29 15:30
閱讀 736·2019-08-29 15:16
閱讀 1736·2019-08-26 10:10
閱讀 3608·2019-08-23 17:02