從統計局採集最新的省市區鎮數據,用js在瀏覽器中運行 V2

本文描述的是對國家統計局於2019-01-31發佈的《2018年統計用區劃代碼和城鄉劃分代碼(截止2018年10月31日)》的採集。html

相對於用於和採集2016版2017版的js代碼作了比較大的優化和調整,就開一遍文章來介紹這個V2版本。老版本文章python

本文更新(移步查閱):
19-04-15 新採集了2018的省市區三級座標和行政區域邊界
19-03-22 採集了2018的城市數據git

數據下載 GitHub:https://github.com/xiangyuecn/AreaCity-JsSpider-StatsGov/releasesgithub

數據預覽

數據來源

國家統計局統計標準《2018年統計用區劃代碼和城鄉劃分代碼(截止2018年10月31日)》,截稿時是最新的。
ajax

數據採集

對於數據採集,根據工做須要,對於一些小的數據採集功能有些接觸。由於對htmljs熟些,很早之前就用IE瀏覽器對本地html文件支持任意跨域ajax請求數據、和支持讀寫Excel文件,就直接寫一個html文件做爲採集工具給別人使用,批量查詢人員資料、考試結果什麼的功能。因此採集省市區數據主要用的jschrome

因爲新版本chrome對編碼有問題,統計局的是gb2312,會亂碼,chrome 41古董版本沒有問題,因此採集都是在chrome41下完成的,本身製做Chrome便攜版實現多版本共存跨域

1. 抓取原始數據

涉及源碼:1_抓取國家統計局城市信息.js瀏覽器

進入統計局頁面,執行代碼便可完成抓取,開了4個模擬的線程,抓取省市區鎮4級數據仍是很快的,採集了3400+頁面,首次運行大概1分多鐘完成採集(我這個截圖是開了瀏覽器緩存,因此有4秒的假象,編寫本文時有個url掛逼了,不知道是否是統計局服務器出了問題)。緩存

抓取完成後會自動彈出保存文件數據。服務器

2. 拼音轉換

這個須要找一個接口對文字進行拼音轉換,只有一個要求:重慶能正常的翻譯成chong qing便可,翻譯成zhong qing的就low了。知足這個條件,百度上搜索到的翻譯小網站99%就被幹掉了。

另外Github上不少star很高的開源庫的轉換表現也並不理想,試過hotoo/pinyin,開了分詞,多音字的結果仍是不是差了一點半點,放棄了。最後採用的hankcs/HanLP的python庫來進行轉換,對地名多音字的支持仍是有限的,字地名不少轉換成dou囧,不過在同類型裏面算是最好的。

仍是之前找到的翻譯接口https://www.qqxiuzi.cn/zh/pinyin/對拼音的轉換準確度最高,聽說依據《新華字典》、《現代漢語詞典》等規範性辭書校對。不過這個站從去年開始對IP會有限制,之前是隨便轉換,從2017版數據採集開始進行了剋制處理,整個翻譯過程接口調用不超過10次,中間可能須要換1-3次代理(已實現用js自動化切換代理)。

轉換過程

由於本次採集的數據量比較多,省市區3級數據僅3400來條,但包含了鎮這級的4.2萬多條數據,轉換壓力有點大。所以採起了省市區3級使用qqxiuzi的高準確度接口,鎮級的採用本地HanLP轉換接口。而且轉換時採用全名稱進行轉換,相比之前使用精簡的短名多音字方面稱更加準確。

本地用HanLP庫進行轉換一遍,低準確度

涉及源碼:2_1_抓取拼音.js

先打開拼音轉換python服務,服務程序在Github.pinyin-python-server目錄內,根據介紹進行運行。

而後在剛纔那個抓取頁面裏執行js代碼便可。寫稿時從新轉了一遍,用了4個模擬線程,花了5分鐘時間,4.7萬條數據所有轉完。

爲啥不用python直接轉,非要走一遍http請求?答:不會寫,也方便不用本地搭建服務,使用別的機器提供的接口(我搭建了一個臨時的拼音接口測試服務器,能夠測試)。

使用qqxiuzi對省市區3級從新轉換一遍,高準確度

涉及源碼:2_2_抓取拼音.js

http://www.qqxiuzi.cn/zh/pinyin/運行代碼,而後根據提示導入上一步保存的數據便可,再次運行代碼便可,若是被屏蔽IP,須要手動切換代理,或者根據源碼裏面的提示設置SwitchyOmega自動切換代理。

整個轉換過程大概須要1分鐘左右,查找有效代理慢的話可能須要更久。(源碼裏面緩存拼音結果部分代碼錯誤,等下次採集在修復吧,寫稿子時候發現的)

3. 處理數據和導出CSV

涉及源碼:3_格式化.js

處理數據就相對簡單些了,但花的時間最多,由於要去分析數據。額外添加了港澳臺海外4個數據。另外去掉民族自治區、州、縣、旗;民族鄉、鎮後綴。還有去掉統計出來比較多的幾個後綴,市|縣|鎮|鄉|街道|街道辦事處|地區辦事處|社區服務中心,有些比較少的後綴沒有去掉,去掉有可能有些地名有歧義。

代碼運行完成就自動彈出保存csv文件數據了。

最後

數據下載和相關問題請到 Github查看:https://github.com/xiangyuecn/AreaCity-JsSpider-StatsGov

releases內有處理好的3級或者4級 csv數據提供下載。

若是這個庫有幫助到您,請 Star 一下。

相關文章
相關標籤/搜索