from bs4 import BeautifulSoup

import pandas as pd

import requests

headers = {

'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.116 Safari/537.36'}

获取一级代码、名称、下一级链接

通过设置参数originUrl来调整爬取的年份

def getOneLevelCodeName(originUrl = 'http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2019/index.html'):

web = requests.get(originUrl,headers=headers) #获取网页

web.encoding = web.apparent_encoding #设置编码

soup = BeautifulSoup(web.text,'html.parser') #解析网页

provinceList = soup.select('.provincetr') #查找类名为provincetr的内容

oneLevelWeb = []

for table in provinceList:

for province in table.select('a'):

oneLevelWeb.append((province['href'],province.text))#获取下一级短链接、获取省名

oneLevelWebUrl = [(url[0][0:2]+'0000000000','中国-'+url[1],originUrl[0:54]+url[0]) for url in oneLevelWeb] #构建区划代码、省名、下一级链接

return oneLevelWebUrl

获取二级代码、名称、下一级链接

#根据一级链接,获取下一级

def getSecodLevelCodeName(proLevelName=None,url='None'):

if proLevelName is None or url == 'None':

pass

else:

web = requests.get(url,headers=headers)

web.encoding = web.apparent_encoding

soup = BeautifulSoup(web.text,'html.parser')

secondLevelCodeNameList = soup.select('.citytr')

retList = []

for tag in secondLevelCodeNameList:

if tag.text[12:] == '市辖区':

retList.append((tag.text[0:12],proLevelName+'-'+proLevelName.split('-')[-1]+tag.text[12:],url[0:54]+tag.select('a')[0]['href']))

else:

retList.append((tag.text[0:12],proLevelName+'-'+tag.text[12:],url[0:54]+tag.select('a')[0]['href']))

return retList

获取三级代码、名称、下一级链接

#根据二级链接,获取下一级

def getThirdLevelCodeName(proLevelName=None,url='None'):

if proLevelName is None or url == 'None':

pass

else:

web = requests.get(url,headers=headers)

web.encoding = web.apparent_encoding

soup = BeautifulSoup(web.text,'html.parser')

thirdLevelCodeNameList = soup.select('.countytr')

retList = []

for tag in thirdLevelCodeNameList:

try:

retList.append((tag.text[0:12],proLevelName+'-'+tag.text[12:],url[0:56]+'/'+tag.select('a')[0]['href']))

except:

retList.append((tag.text[0:12],proLevelName+'-'+proLevelName.split('-')[-1]+tag.text[12:],'None'))

return retList

获取四级代码、名称、下一级链接

#根据三级链接,获取下一级

def getFourthLevelCodeName(proLevelName=None,url='None'):

if proLevelName is None or url == 'None':

pass

else:

web = requests.get(url,headers=headers)

web.encoding = web.apparent_encoding

soup = BeautifulSoup(web.text,'html.parser')

fourthLevelCodeNameList = soup.select('.towntr')

retList = []

for tag in fourthLevelCodeNameList:

retList.append((tag.text[0:12],proLevelName+'-'+tag.text[12:],url[0:60]+tag.select('a')[0]['href']))

return retList

转为DataFrame,输出excel文件

pd_oneLevel = pd.DataFrame(oneLevel)

pd_oneLevel

pd_secondLevel = pd.concat([pd.DataFrame(data) for data in secondLevel])

pd_secondLevel

pd_thirdLevel = pd.concat([pd.DataFrame(data) for data in thirdLevel])

pd_thirdLevel

pd_fourthLevel = pd.concat([pd.DataFrame(data) for data in fourthLevel])

pd_fourthLevel

pd_allLevel = pd.concat([pd_oneLevel,pd_secondLevel,pd_thirdLevel,pd_fourthLevel],ignore_index=True)

pd_allLevel.columns = ['区划代码','名称','下一级网址']

pd_allLevel

保存到当前目录

import os

pd_allLevel.to_excel(r''+os.path.realpath('__file__')[0:-8]+'2018区划代码及名称.xlsx',index=False)

php抓取统计局区划代码,抓取国家统计局的代码和名称,爬取,区域,划分,及相关推荐

  1. python实现微信hook_GitHub - gemgin/wechathook: 借助微信hook,拦截修改某些call,填充进我们的Python代码,进行微信公众号文章的爬取...

    wechathook 借助微信hook,拦截修改某些call,填充进我们的Python代码,进行微信公众号文章的爬取 注入器 注入dll进程序中 DLL 实现hook功能,申请内存,修改call,在里 ...

  2. python实现微信hook_GitHub - redtips/wechathook: 借助微信hook,拦截修改某些call,填充进我们的Python代码,进行微信公众号文章的爬取...

    wechathook 借助微信hook,拦截修改某些call,填充进我们的Python代码,进行微信公众号文章的爬取 注入器 注入dll进程序中 DLL 实现hook功能,申请内存,修改call,在里 ...

  3. python实现微信hook_GitHub - zhouxionger/wechathook: 借助微信hook,拦截修改某些call,填充进我们的Python代码,进行微信公众号文章的爬取...

    wechathook 借助微信hook,拦截修改某些call,填充进我们的Python代码,进行微信公众号文章的爬取 注入器 注入dll进程序中 DLL 实现hook功能,申请内存,修改call,在里 ...

  4. python hook微信_GitHub - 15993248973/wechathook: 借助微信hook,拦截修改某些call,填充进我们的Python代码,进行微信公众号文章的爬取...

    wechathook 借助微信hook,拦截修改某些call,填充进我们的Python代码,进行微信公众号文章的爬取 注入器 注入dll进程序中 DLL 实现hook功能,申请内存,修改call,在里 ...

  5. hook微信 python_GitHub - zkqiang/wechathook: 借助微信hook,拦截修改某些call,填充进我们的Python代码,进行微信公众号文章的爬取...

    wechathook 借助微信hook,拦截修改某些call,填充进我们的Python代码,进行微信公众号文章的爬取 注入器 注入dll进程序中 DLL 实现hook功能,申请内存,修改call,在里 ...

  6. python爬取南京市房价_基于python的链家小区房价爬取——仅需60行代码

    简介 首先打开相关网页(北京链家小区信息). 注意本博客的代码适用于爬取某个城市的小区二手房房价信息. 如果需要爬取其他信息,可修改代码,链家的数据获取的基本逻辑都差不多. 效果展示 因为只需要60行 ...

  7. python爬取微博热搜并存入表格_python爬虫进阶之爬取微博热搜存入Mysql

    在编程中,我们如果想要把数据转入数据库中,首先会选择 MySQL数据库.因为MySQL数据库体积小.速度快.总体拥有成本低.开放源代码,其有着广泛的应用,例如我们使用python爬虫微博热搜,就可以使 ...

  8. python爬取国内代理ip_【python】国内高匿代理爬取,并验证代理ip有效性

    运行环境:python 3.7.3 所需库: 1. requests 2. lxml 3. time 4. multiprocessing 5. sys 目的:构建自己的代理ip池,针对封ip型反爬虫 ...

  9. Python 爬虫 之 爬取古代的诗歌,并保存本地(这里以爬取李白的所有诗歌为例)(以备作为AI写诗的训练数据)

    Python 爬虫 之 爬取古代的诗歌,并保存本地(这里以爬取李白的所有诗歌为例)(以备作为AI写诗的训练数据) 目录

最新文章

  1. python获取数据库查询的元数据_Python数据库、MySQL存储引擎、使用分区表、更改表结构、获取数据库元数据...
  2. python入门教程 官方-Python 入门指南
  3. imx6 uboot lvds clock
  4. access里面的表达式运用_Access表达式解析
  5. 7种 Java 设计模式,你会几种?
  6. STL源码剖析 heap堆结构
  7. 构建高性能.NET应用之配置高可用IIS服务器-第五篇 IIS常见问题之:工作进程回收机制(中)...
  8. 说说python程序的执行过程_做人,尽量不要说这四种话,一说,祸事就来了
  9. 月入1万的工作,招不到人,怎么办?
  10. Linux 的 复制命令 【 cp 】 (copy)及其 (常用参数 -fp)
  11. LINUX 查看分区UUID的两种方法
  12. 暗黑3 外挂开发资料
  13. socket服务器和客户端的建立步骤
  14. 卷积、线性时不变系统、因果系统
  15. 如何设计大自然?#合成美学 #无学科专栏
  16. python二元函数如何编写,Nelder_Mead算法的简介和用作求解二维函数最小值的Python实现...
  17. WhatsApp 批量解封提交工具
  18. 安装完PLSQL遇到Initialization error错误解决办法
  19. 金仓监控软件kmonitor安装成功后打开监控界面,监控不到实例
  20. 更改airsim无人机模型

热门文章

  1. SQL Server AlwaysOn 集群 关于主Server IP与Listener IP调换的详细测试
  2. Docker最全教程之使用TeamCity来完成内部CI、CD流程(十七)
  3. 安逸:鼠绘《诗与远方》
  4. .NET Core微服务之路:基于Ocelot的API网关实现--http/https协议篇
  5. 塑造Visual Studio的未来
  6. redis watch使用场景_redis不得不会的事务玩法
  7. 重磅!win10无法安装.NET Framework 3.5服务解决办法(附离线安装包下载)
  8. Android之SubsamplingScaleImageView加载长图不能放缩问题
  9. 用递归方式实现二叉树先序、中序、后序遍历
  10. 用beyond compare解决git不能同步项目重新下载项目然后就行对比解决冲突