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

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

c3454b3157096a5ee264abf53ed95704.png

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

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

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

f48f0655b65210fb36d6a2ee1eb0d049.png

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

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

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

b90897145c5356a20c76bec93d2df43e.png

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

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

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

2226cf29c9c242b10f62e0dd44782da1.png

转为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

3502ae2d8fbc18ea8ee1746c66eba385.png

保存到当前目录

import os

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/298901.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

XMPP聊天之Openfire 的安装和配置---Mac OS

2019独角兽企业重金招聘Python工程师标准>>> 一、下载并安装openfire 1、下载最新的openfire安装文件 官方下载站点:http://www.igniterealtime.org/downloads/index.jsp#openfire openfire是服务器,下面还有一个spark,这个是一…

Open Flash Chart 初体验

今天项目中要用到图表统计,原来用的是Dundas 但效果不怎么好 后来发现Open Flash Chart不错 而且是结合着Flash 比较动态 可到官方下载查看http://teethgrinder.co.uk/open-flash-chart/而且是很多语言都支持的 虽然有专门语言的,但我还是喜欢使用原生…

如何用C#在Excel中生成图表?

如何用C#在Excel中生成图表?exc.Charts.Add(oMissing,oMissing,1,oMissing); exc.ActiveChart.ChartTypeExcel.XlChartType.xlColumnClustered; exc.ActiveChart.SetSourceData(worksheet.get_Range("A1","B10"),Excel.XlRow…

物理学十大著名经典实验!你知道几个?

科学实验是物理学发展的基础,又是检验物理学理论的惟一手段,特别是现代物理学的发展,更和实验有着密切的联系。现代实验技术的发展,不断地揭示和发现各种新的物理现象,日益加深人们对客观世界规律的正确认识&#xff0…

5码默认版块_5个小众的生活学习类的宝藏App

今天分享 5 个宝藏 App ,每一个都是小众冷门,每一个都是自己用心挑选,相信可以让你眼前一亮。所有 App 下载方法文章末尾提供。1 卡片日记卡片日记是一个颜值极高的卡片日记软件,它备受好评,可以说你用过就知道好用&am…

在 .NET 中加载椭圆曲线 (EC) 密钥

在 .NET 中加载椭圆曲线 (EC) 密钥本文将讨论在.NET 中解析和加载EC 密钥的不同方式。在本文中,您将了解 EC 密钥的构成,然后了解如何以四种不同的方式使用这些知识ECDsa在 .NET 中加载或创建对象。到本文结束时,您应该能够加载 EC 密钥&…

线性跟驰模型 matlab,Bierley非线性跟驰模型特性仿真分析

第 28卷第 4期 2014年 8月 黑 龙 江 工 程 学 院 学 报 Journal of Heilongjiang Institute of Technology VoL 28,NO.4 Aug..2014 Bierley非线性跟驰模 型特性仿真分析 李全艳,崔 琳,詹晓松 (黑龙江工程学…

MDT部署中命令行脚本的使用。

参考:http://blogs.technet.com/b/deploymentguys/archive/2010/07/07/using-command-shell-scripts-with-mdt.aspx OK… I’ll admit it, I like to write Command Shell (CMD) scripts when I can. For me it’s like putting on an old broken-in pair of sneak…

CSS/DIV网页设计视频教程目录【转】

CSS/DIV网页设计视频教程目录 欢迎您来到前沿视频教室,下面列出的是CSS/DIV网页设计视频教程列表。这组视频教程是配合《精通CSSDIV网页样式与布局》图书制作的,每一课对应于图书中的每一章。 我们还会不断地推出相关的课程, 如果您有兴趣&am…

世界上最伟大的十大公式

▲ 点击查看英国科学期刊《物理世界》曾让读者投票评选了“最伟大的公式”,最终榜上有名的十个公式既有无人不知的112,又有著名的Emc^2;既有简单的-圆周公式,又有复杂的欧拉公式……这些公式不仅仅是数学家和物理学家的智慧结晶&a…

区块链浏览器_全球首款区块链浏览器是啥名堂?傲游6首发体验

[PConline 应用]沉寂多年的傲游浏览器终于准备发布大版本更新了,这次为大家带来的是傲游浏览器6,一个被官方称为“世界第一个区块链浏览器”的新版本,那么,有何特色呢?我们一起来看看吧。傲游浏览器6(后简称傲游6)在安…

ASP.NET Core官方文档+源码,这样学效率高10倍!

.NET Framework停更一年了,学习.NET Core跨平台是大势所趋。如何快速学习ASP.NET Core?在我看来,先看微软ASP.NET Core5.0官方中文文档,再大致读一遍源码,最后结合一些场景做些扩展封装,就可以很轻松的驾驭…

WPF 2D绘图(2)Geometry

Shape是对Geometry的一种封装,Shape本质上还是通过绘制Geometry的形状,然后以填充笔刷来呈现效果 如Rectangle <Path Stroke"Black" StrokeThickness"1" Fill"#CCCCFF"><Path.Data><RectangleGeometry Rect"30,55 100 30&qu…

php ip处理函数,PHP取ip地址函数

从thinkphp3.2中提取出来的取请求ip地址的函数/*** 获取客户端IP地址* param integer $type 返回类型 0 返回IP地址 1 返回IPV4地址数字* param boolean $adv 是否进行高级模式获取(有可能被伪装)* return mixed*/function get_client_ip($type false, $adv true) {$type …

Windows Server 2008 R2 之三十故障转移群集(二)

五、群集的管理破坏群集&#xff1a;一个两节点的群集&#xff0c;对于第一个节点必须在“节点”中选择“退出”才能退出群集&#xff1b;对于第二个节点&#xff0c;必须在下图选择“破坏群集”才能退出群集。配置服务和应用程序&#xff1a;节点&#xff1a;存储&#xff1a;…

Oracle执行计划详解

---引用------作者&#xff1a;TTT BLOG本文地址&#xff1a;http://blog.chinaunix.net/u3/107265/showart_2192657.html---简介&#xff1a;本文全面详细介绍oracle执行计划的相关的概念&#xff0c;访问数据的存取方法&#xff0c;表之间的连接等内容。并有总结和概述&#…

提升心力---摆脱拿着锤子看啥都是钉子

从程序员到一个团队的管理者&#xff0c;这中间需要经过一次又一次的蜕变&#xff0c;最终才能变得处理任何事情都得心应手。韩非子曾说&#xff1a;下君用己之力、中君用人之力、上君用人之智。大部分的管理者可能都处在用人之力的阶段&#xff0c;并向着用人之智前进。最近看…

curd什么意思中文_每日一句英译英:She's a ten什么意思?

每日一句英译英&#xff1a;Shes a ten什么意思&#xff1f;用一句“没头没脑”的英语句子劈头盖脑就问你“中文什么意思&#xff1f;“&#xff0c;这是典型的把英语当纯粹知识学习的例子&#xff0c;也是“只求答案&#xff0c;不问过程”的应试思维模式。“知识海洋”浩瀚无…

你家猫砸东西是不是也专挑贵的砸?

1 这猫也太会了吧&#xff1f;▼2 哥哥坐地上耍赖想让爸爸抱被妹妹出手摆平了▼3 好可爱的校车▼4 也许人家只是想静静呢&#xff1f;▼5 最近很流行的【泼花成画】▼6 妹妹的表情简直学到了精髓▼7 介绍一下&#xff0c;这是一只阿拉斯猪和阿拉斯小猪崽儿▼你点的每个赞…

C++巧用do...while(0)

在C中&#xff0c;有三种类型的循环语句&#xff1a;for, while, 和do...while&#xff0c; 但是在一般应用中作循环时&#xff0c; 我们可能用for和while要多一些&#xff0c;do...while相对不受重视。 但是&#xff0c;最近在读我们项目的代码时&#xff0c;却发现了do..…