知乎爬蟲之2:爬蟲流程設計(附贈爬出的資料庫),爬蟲附贈

來源:互聯網
上載者:User

知乎爬蟲之2:爬蟲流程設計(附贈爬出的資料庫),爬蟲附贈

本文由博主原創,轉載請註明出處:我的部落格-知乎爬蟲之爬蟲流程設計

git爬蟲項目地址(關注和star在哪裡~~):https://github.com/MatrixSeven/ZhihuSpider (已完結)

附贈之前爬取的資料一份(mysql): 連結:https://github.com/MatrixSeven/ZhihuSpider/README.MD 只下載不點贊,不star,差評差評~藍瘦香菇)

(Ps:這個思路有問題,實際上並不是這麼搞得代碼,後續補上)
說到爬蟲,其實寫起來很簡單,爬蟲無非就是將自己想要的內容在頁面上抽離出來,並且儲存。這個過程在今天已經變得非常輕鬆,在Java下有Jsoup,Python下有BS4,還有通吃的正則等等,然而真正難的卻是在於偽造請求,截獲分析請求參數,擷取正確的頁面.
首先來說,一個能混得過去的爬蟲,應該有一個優秀的流程,在明確自己的目標後,應該立馬去設計爬蟲工作流程,而不是去無腦的Coding。

那麼今天咱們就先研究下咱們這個爬蟲的目標和流程。
首先咱們是要擷取知乎頁面上的個人資訊,關注和被關注資訊,首先咱們會遇到第一個問題就是登陸,咱們這裡暫且不講,
其次咱們就是要給定一個初始化url,然後進行followers的和followees的擷取,然後迴圈爬起來,那麼其中一定會遇到資料重複和人物關係建立的問題。

1.過濾重複資料

這個相對而言比較簡單,有幾種常規方法:

1. 資料庫設定主鍵,鎖定人物ID2. 存入資料時查詢資料庫資料3. 使用緩衝隊列,在緩衝中尋找資料判斷

首先來說第一種,資料庫設定主鍵,鎖定人物ID,這個方法可以使資料永遠不重複,但是也會造成批量插入的時候造成出錯
第二種方法,存入資料時查詢資料庫資料,可行,但是多次訪問資料庫,造成效率低下
第三種方法,使用緩衝隊列,在緩衝中尋找資料判斷,這種方法很好,而且速度相對較快,但是緩衝太多容易出現OOM問題

在這裡咱們不選擇某一種方案,而是採用主鍵+優先緩衝+資料庫查詢方式,後期自己實現一個LRU緩衝隊列,提供命中率

2. 爬取時建立人物關係

這個問題思考了很久,也比較噁心,在人物不確定的情況下進行人物的擷取和關係的建立,怎麼處理好呢。我的想法是讓每一個人員資訊攜帶一個上級資訊,來判斷是否能夠構建人物關係,有點類似於尾遞迴的思想。

3. 繪製流程圖

那麼對於咱們的一個整體流程目前就有了(挑戰一下,還是放棄了、哈哈):

擷取URL-->解析頁面<--------            |            |            |            |         是否存在         |            /\           |           /  \          |        更新   攜帶       |        資料   資訊       |               /\        |              /  \       |            跟隨  關注    |            資訊  資訊----

擷取URL–》解析—》判斷—》更新/攜帶資訊?—》分析跟隨者/根系粉絲–》解析頁面
最終畫出真正的流程圖

//吾愛Java(QQ群):170936712(點擊加入)

 

 

 

 

 

 

 

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.