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