唯一合理的解釋是:天眼查透過網路爬蟲抓取了全國企業信用資訊公示系統的絕大部分公司工商資料。
這其中存在兩個難點:
對於解決方案,第一個難點有兩個需要解決的問題:1) 各省查詢的時候提交請求引數不同; 2) 解析的網頁結構不同。第一個無他法,只有硬著頭皮手寫三十多個不同的提交請求的方式,來模擬各省份不同的查詢介面。第二個,其實是可以做到通用,因為雖然網頁結構不完全相同,但是最後的呈現形式大同小異,所以是有方式做到非常通用的解析程式碼的。之所以不說百分之百通用,是因為總有例外需要特殊處理,比如重慶的工商資料,返回的就是一個 JSON 串,不需要再去解析 HTML。
第二個問題才是真正棘手的。無法直接遍歷工商資訊,那麼怎樣獲取儘可能多的工商資料呢?第一,全國企業信用資訊公示系統的訪問時很慢的,所以在這裡做遍歷的話,效率會非常低。但是,每個公司會有唯一的組織機構程式碼,生成規則可以在網上找到,或者可以直接買一本回去慢慢研究(組織機構程式碼),透過生成所有的組織機構程式碼,就可以去這個網站——「全國組織機構程式碼管理中心 -- 誠信體系實名制查詢」——查詢到對應的基本資訊,然後再會到剛才的全國企業信用資訊公示系統,就可以查詢到對應的工商資訊了。
另外,我相信天眼查還會做的一件事就是,當用戶查詢一家公司,在自己資料庫沒有找到結果的時候,會立即去全國企業信用資訊公示系統查詢,並將結果儲存下來。
做到上面的內容,還需要一種機制定期更新資料庫中的大量公司的資訊,當然這是後話。當然,這兩步中都面臨一個問題——驗證碼。數以千萬計的公司,如果使用人肉打碼的話,效率和成本上肯定都是無法承受的,所以,相信天眼查內部還會有一位以上影象識別方面的大牛,畢竟上面出現的網站中有些驗證碼的識別還是非常困難的。
唯一合理的解釋是:天眼查透過網路爬蟲抓取了全國企業信用資訊公示系統的絕大部分公司工商資料。
這其中存在兩個難點:
這裡只是一個聚合站,每個省的查詢介面和對應的 HTML 結構是不同的,如何高效抓取及解析資料;這個系統並沒有一個展示所有公司的列表,需要傳遞一個引數查詢,如何遍歷所有註冊公司。對於解決方案,第一個難點有兩個需要解決的問題:1) 各省查詢的時候提交請求引數不同; 2) 解析的網頁結構不同。第一個無他法,只有硬著頭皮手寫三十多個不同的提交請求的方式,來模擬各省份不同的查詢介面。第二個,其實是可以做到通用,因為雖然網頁結構不完全相同,但是最後的呈現形式大同小異,所以是有方式做到非常通用的解析程式碼的。之所以不說百分之百通用,是因為總有例外需要特殊處理,比如重慶的工商資料,返回的就是一個 JSON 串,不需要再去解析 HTML。
第二個問題才是真正棘手的。無法直接遍歷工商資訊,那麼怎樣獲取儘可能多的工商資料呢?第一,全國企業信用資訊公示系統的訪問時很慢的,所以在這裡做遍歷的話,效率會非常低。但是,每個公司會有唯一的組織機構程式碼,生成規則可以在網上找到,或者可以直接買一本回去慢慢研究(組織機構程式碼),透過生成所有的組織機構程式碼,就可以去這個網站——「全國組織機構程式碼管理中心 -- 誠信體系實名制查詢」——查詢到對應的基本資訊,然後再會到剛才的全國企業信用資訊公示系統,就可以查詢到對應的工商資訊了。
另外,我相信天眼查還會做的一件事就是,當用戶查詢一家公司,在自己資料庫沒有找到結果的時候,會立即去全國企業信用資訊公示系統查詢,並將結果儲存下來。
做到上面的內容,還需要一種機制定期更新資料庫中的大量公司的資訊,當然這是後話。當然,這兩步中都面臨一個問題——驗證碼。數以千萬計的公司,如果使用人肉打碼的話,效率和成本上肯定都是無法承受的,所以,相信天眼查內部還會有一位以上影象識別方面的大牛,畢竟上面出現的網站中有些驗證碼的識別還是非常困難的。