看了下天眼查的網站,除了工商數據之外,還有招聘數據、著作權、專利、商標、企業新聞等,這裏只問到了企業工商數據,故先只回答企業工商數據的來源,其他部份有時間可以更新一下。
工商封包括了工商基本資訊、股東資訊、工商變更資訊、主要任職人員、企業分支機構、動產抵押、股權出質、行政處罰、企業年報等很多資訊,其 唯一可信的來源,是「全國企業信用資訊公示系統」, 也就是這個網站:
唯一合理的解釋是: 天眼查透過網路爬蟲抓取了全國企業信用資訊公示系統的絕大部份公司工商數據。
這其中存在兩個難點:
對於解決方案,第一個難點有兩個需要解決的問題:1) 各省查詢的時候送出請求參數不同; 2) 解析的網頁結構不同。第一個無他法,只有硬著頭皮手寫三十多個不同的送出請求的方式,來模擬各省份不同的查詢介面。第二個,其實是可以做到通用,因為雖然網頁結構不完全相同,但是最後的呈現形式大同小異,所以是有方式做到非常通用的解析程式碼的。之所以不說百分之百通用,是因為總有例外需要特殊處理,比如重慶的工商數據,返回的就是一個 JSON 串,不需要再去解析 HTML。
第二個問題才是真正棘手的。無法直接遍歷工商資訊,那麽怎樣獲取盡可能多的工商數據呢?第一,全國企業信用資訊公示系統的存取時很慢的,所以在這裏做遍歷的話,效率會非常低。但是,每個公司會有唯一的組織機構程式碼,生成規則可以在網上找到,或者可以直接買一本回去慢慢研究(組織機構程式碼),透過生成所有的組織機構程式碼,就可以去這個網站——「全國組織機構程式碼管理中心 -- 誠信體系實名制查詢」——查詢到對應的基本資訊,然後再會到剛才的全國企業信用資訊公示系統,就可以查詢到對應的工商資訊了。
另外,我相信天眼查還會做的一件事就是,當使用者查詢一家公司,在自己資料庫沒有找到結果的時候,會立即去全國企業信用資訊公示系統查詢,並將結果保存下來。
做到上面的內容,還需要一種機制定期更新資料庫中的大量公司的資訊,當然這是後話。當然,這兩步中都面臨一個問題—— 驗證碼 。數以千萬計的公司,如果使用人肉打碼的話,效率和成本上肯定都是無法承受的,所以,相信天眼查內部還會有一位以上影像辨識方面的大牛,畢竟上面出現的網站中有些驗證碼的辨識還是非常困難的。
---------------------
一點後話
對於天眼查官網首頁的 8000萬+ 企業數據,我是持懷疑態度的,或者說,我絕對不信。其實我看到的不同公司中,有說 3500w+,有說 5000w+,有說 7500w+,各家有各家的說法,保守估計至少 6 成水分,至於究竟是多少,估計只有他們自己知道。
這個答案釋出快兩年了沒動過,不知道為啥今天下午開始一直有人刷評論,截 一小部份 評論的圖給大家見識下 @天眼查 有多不要臉(評論已經被我刪了,不留著惡心大家,同時評論區已經暫時關閉,順手 @知乎小管家 打個小報告):