Code Monkey home page Code Monkey logo

nbsprc-spider's Introduction

国家统计用区划代码和城乡划分代码---源码、详细分析、数据


2019.05.25更新:

  • 添加了爬虫代码使用说明
  • 添加了依赖requirements.txt

2018.12.02更新:

  • 修改爬虫代码,添加了中山市/东莞市下面没有区级单位的异常处理
  • 页面源码的编码为GB2312,实际为GBK,因此手工指定编码为GBKIssues #2

2018.11.30更新:

  • 更新village.csv文件,按照code顺序从小到大排列,看起来更方便
  • 更新数据总结中的错误

2018.11.10更新:


一、本仓库介绍

统计局网站提供的2016年统计用区划代码和城乡划分代码(截止2016年07月31日)按照:省-市-县-镇-村这样的层次关系来组织页面。统计局的网站对于爬虫的限制也不多,我只使用一个ip就爬取全部数据,爬取的过程中请求被拒绝的情况很少。

本仓库包含:

二、如何使用

1、安装依赖

python3 -m pip install -r requirements.txt

2、一次性爬取全部数据

python3 ./Urban-and-rural-statistics-spider.py

3、居委会级数据分段爬取使用说明

居委会级数据量比较大,一次性爬取可能会出现内存不足,所以我提供了一种居委会级数据分段爬取,最后合并各段数据的方法,具体方法如下:

python3 ./Urban-and-rural-statistics-spider.py

以上爬取完成后,可以看到此目录下已经含有了town.csv文件。

df_town = pd.read_csv("town.csv",encoding = 'utf-8')
village = getVillage(df_town['link'][0:10000])

df_village = pd.DataFrame(village)
# 信息写入csv文件
df_village.to_csv('village-0.csv', sep=',', header=True, index=False)

例如:第一次设置village = getVillage(df_town['link'][0:10000])中的爬取链接为[0-10000],同时设置df_village.to_csv('village-0.csv', sep=',', header=True, index=False)中的保存文件名为village-0.csv

python3 ./Village-Spider-Test.py

完成第一段爬取后,然后再手动更改爬取链接为[10000,20000],同时保存文件名改为village-1.csv,执行以上命令,以此类推,直到全部爬取完成。

  • 全部爬取完毕后,复制各段数据到一个空目录下,在此目录下执行如下代码:
python3 ./合并多个csv文件.py

至此,数据合并完毕,得到完整的居委会级数据。

三、数据总结

截止2016年07月31日,我国共有:

  • 31个省
  • 344个市
  • 2852个区
  • 42927个街道
  • 665062个居委会

nbsprc-spider's People

Contributors

dta0502 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

nbsprc-spider's Issues

核对有数据缺失

楼主代码说明很清晰,赞一个。

目前核对缺失的数据如下,分享一下:

  1. 中山东莞下一级开始数据编码特殊,没有数据;
  2. 其他缺失数据:
编码 省份 区县
150801 内蒙古自治区 巴彦淖尔市 市辖区
150802 内蒙古自治区 巴彦淖尔市 临河区
150821 内蒙古自治区 巴彦淖尔市 五原县
150822 内蒙古自治区 巴彦淖尔市 磴口县
150823 内蒙古自治区 巴彦淖尔市 乌拉特前旗
150824 内蒙古自治区 巴彦淖尔市 乌拉特中旗
150825 内蒙古自治区 巴彦淖尔市 乌拉特后旗
150826 内蒙古自治区 巴彦淖尔市 杭锦后旗
330301 浙江省 温州市 市辖区
330302 浙江省 温州市 鹿城区
330303 浙江省 温州市 龙湾区
330304 浙江省 温州市 瓯海区
330305 浙江省 温州市 洞头区
330324 浙江省 温州市 永嘉县
330326 浙江省 温州市 平阳县
330327 浙江省 温州市 苍南县
330328 浙江省 温州市 文成县
330329 浙江省 温州市 泰顺县
330381 浙江省 温州市 瑞安市
330382 浙江省 温州市 乐清市
350527 福建省 泉州市 金门县
632801 青海省 海西蒙古族藏族自治州 格尔木市
632802 青海省 海西蒙古族藏族自治州 德令哈市
632821 青海省 海西蒙古族藏族自治州 乌兰县
632822 青海省 海西蒙古族藏族自治州 都兰县
632823 青海省 海西蒙古族藏族自治州 天峻县

下载2013年数据

Hi,这个很有用。最近我需要2013年的区域代码,但是刚入门python,所以不知道应该在哪里做相应的修改。谢谢。

大佬你的博客访问不了

大佬我关注你的博客很久了, 非常 nice, 给了我很大的帮助, 非常感谢. 但是现在客访问不了,博客那里没有issue, 我就跑到这里来提了. 还有希望修复一下博客吗,

中文乱码

抓取2017版最新数据,发现部分区域名称存在乱码情况,
国家统计局页面源码的编码定义为gb2312,实际为gbk
因此 需要手工指定编码
def getUrl(url,num_retries = 5):
ua = UserAgent()
headers = {'User-Agent':ua.random}
try:
response = requests.get(url,headers = headers)
response.encoding = "GBK"
data = response.text
print(url)
return data
except Exception as e:
if num_retries > 0:
time.sleep(10)
print(url)
print("requests fail, retry!")
return getUrl(url,num_retries-1) #递归调用
else:
print("retry fail!")
print("error: %s" % e + " " + url)
return #返回空值,程序运行报错`

取2022年数据,中文乱码

编码是GBK。也url改为了2022年。但是中文省市县名字是不像乱码的乱码。求解。
好像爬取2016的又没问题。

使用代码过程中遇到的问题

你好,使用代码过程中遇到了两个问题,不知道是否有解决的办法。
问题1:爬取过程中遇到“http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/36/3605.html
requests fail, retry!”
或者“Exception in thread Thread-8:
Traceback (most recent call last):
File "C:\Users\hp\AppData\Local\Programs\Python\Python37\lib\threading.py", line 926, in _bootstrap_inner
self.run()
File "C:\Users\hp\AppData\Local\Programs\Python\Python37\lib\threading.py", line 870, in run
self._target(*self._args, **self._kwargs)
File "C:/Users/hp/Desktop/python/pythonProject3/main.py", line 83, in getData
countyList = selector.xpath('//tr[@Class="countytr"]')
AttributeError: 'NoneType' object has no attribute 'xpath'”
我认为这可能是由于我爬取的次数过多,才出现这种情况。经过一段时间之后,再跑程序,该问题就解决了。不知道有没有更好的解决方法。
问题2:有一些行政区划代码没有链接,爬取的结果中没有包括这些码值,如“350527000000-金门县”、“350501000000-市辖区”。

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.