Python3爬取2023省市区

爬取地址https://www.stats.gov.cn/sj/tjbz/tjyqhdmhcxhfdm/2023/

import re
import requests
import pandas as pd
import warnings
warnings.filterwarnings("ignore")
import time
from lxml import etree
import pymysql
t ,urls ,names = [],[],[]
INDEX_URL = "https://www.stats.gov.cn/sj/tjbz/tjyqhdmhcxhfdm/2023/" #初始url# 创建连接
conn = pymysql.connect(host='127.0.0.1',port=3306,user='**',passwd='**', db='**',charset='utf8mb4')
# 获取游标对象
cursor = conn.cursor()
insert_data_sql = "insert into region(code, name,pcode) values(%s, %s,%s);"
#row = cursor.execute(insert_data_sql, ('shark', 18))headers = {'User-Agent':'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.6) Gecko/20091201 Firefox/3.5.6'}
# 创建不验证证书的上下文
# context = ssl.create_default_context()
# context.check_hostname = False
# context.verify_mode = ssl.CERT_NONE
#获取省份页面
#province_response = urllib.request.urlopen(INDEX_URL + "index.html",context=context).read().decode("utf-8")province_response = requests.get(INDEX_URL + "index.html")
province_response.encoding= 'utf-8'     # 指定编码 
# 获取省份列表
province_data = re.findall(r"<td><a href=\"(.*?)\">(.*?)<br /></a></td>", province_response.text)def get_city_code(province_url,names,codes):# 获取城市初始页print(INDEX_URL + province_url)print('爬取省份-----------------{}'.format(names))global restry:city_response = requests.get(INDEX_URL + province_url)city_response.encoding= 'utf-8'     # 指定res的编码 #city_response = urllib.request.urlopen(INDEX_URL + province_url,context=context).read().decode("utf-8")except Exception as a:city_response = requests.get(INDEX_URL + "index.html")city_response.encoding= 'utf-8'     # 指定res的编码 #city_response = urllib.request.urlopen(INDEX_URL + province_url,context=context).read().decode("utf-8")print(a)# 获取地区名称 + 地区代码city_data = etree.HTML(city_response.text) #etree.HTML(city_response)for i in city_data.xpath('//tr[@class="citytr"]'):code2 = i.xpath('td[1]//text()')[0]name2 = i.xpath('td[2]//text()')[0]cursor.execute(insert_data_sql, (code2, name2,codes))conn.commit()try:url  = i.xpath('td[1]/a/@href')[0]get_area_code(url,code2)except Exception as a:print('异常url:',url)print('异常城市:',name2)print(f"An error occurred: {a}")def get_area_code(city_url,codes):# 获取区县
#     print('请求城市',INDEX_URL + city_url)try:area_response = requests.get(INDEX_URL + city_url)area_response.encoding= 'utf-8'     # 指定res的编码 #area_response = urllib.request.urlopen(INDEX_URL + city_url,context=context).read().decode("utf-8")
#         print('请求成功')except Exception as a:     area_response = requests.get(INDEX_URL + city_url)area_response.encoding= 'utf-8'     # 指定res的编码   #area_response = urllib.request.urlopen(INDEX_URL + city_url,context=context).read().decode("utf-8")  #错误后重新调用方法# 获取街道名称 + 街道代码area_data = etree.HTML(area_response.text)if len(area_data)==0:print("---------------------区县异常------------------------------",city_url)for i in area_data.xpath('//tr[@class="countytr"]'):code3 = i.xpath('td[1]//text()')[0]name3 = i.xpath('td[2]//text()')[0]cursor.execute(insert_data_sql, (code3, name3,codes))conn.commit()def get_street_code(area_url):global res# 获取街道初始页try:street_response = requests.get(INDEX_URL + area_url)street_response.encoding= 'utf-8'     # 指定res的编码 #street_response = urllib.request.urlopen(INDEX_URL + area_url[3:5] + "/" + area_url,context=context).read().decode("utf-8")except Exception as a: street_response = requests.get(INDEX_URL + area_url)street_response.encoding= 'utf-8'     # 指定res的编码 #street_response = urllib.request.urlopen(INDEX_URL + area_url[3:5] + "/" + area_url,context=context).read().decode("utf-8")print(a)#     print(street_data)street_data = etree.HTML(street_response.text)if len(street_data)==0:print("---------------------------------------------------",area_url)# 获取街道名称 + 街道代码for i in street_data.xpath('//tr[@class="towntr"]'):code4 = i.xpath('td[1]//text()')[0]name4 = i.xpath('td[2]//text()')[0]new_row = pd.Series({'代码':code4,'区域':name4})res = pd.concat([res,new_row.to_frame() ], ignore_index=True)for url, name1 in province_data:# 获取省份名称 与 代码code1 = url.replace(".html", "") + "0" * 10if url not in urls:cursor.execute(insert_data_sql, (code1, name1,0))conn.commit()get_city_code(url,name1,code1)

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

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

相关文章

Java两地经纬度通过高德api获取两地距离(公里)

代码如下&#xff1a; String startLongitude entity.getLONGITUDE(); // 起点&#xff08;当前位置&#xff09;经度String startLatitude entity.getLATITUDE(); // 起点纬度String endLongitude entity.getLO(); // 终点经度String endLatitude entity.getLA(); …

Spring框架介绍及详细使用

前言 本篇文章将会对spring框架做出一个比较详细的讲解&#xff0c;并且每个知识点基本都会有例子演示&#xff0c;详细记录下了我在学习Spring时所了解到全部知识点。 在了解是什么spring之前&#xff0c;我们要先知道spring框架在开发时&#xff0c;服务器端采用三层架构的方…

电子元器件批发采购的数字化转型与技术应用

电子元器件批发采购的数字化转型和技术应用是提高效率、优化供应链管理以及增强竞争力的关键。以下是一些数字化转型和技术应用的方面&#xff1a; 电子商务平台&#xff1a;建立并优化电子商务平台&#xff0c;提供在线采购功能&#xff0c;使客户能够方便地浏览产品、下订单、…

ABNDP: Co-optimizing Data Access and Load Balance in Near-Data Processing——论文泛读

ASPLOS 2023 Paper 论文阅读笔记整理 问题 近数据处理&#xff08;NDP&#xff09;是一种很有前途的体系结构范式&#xff0c;可以解决数据密集型应用程序的内存墙挑战。基于3D堆叠存储器的典型NDP系统包含大量并行处理单元&#xff0c;每个并行处理单元都可以访问其本地存储…

HTML基础:8个常见表单元素的详解

你好&#xff0c;我是云桃桃。 一个希望帮助更多朋友快速入门 WEB 前端程序媛。 后台回复“前端工具”可免费获取开发工具&#xff0c;持续更新。 今天来说说 HTML 表单。它是用于收集用户输入信息的元素集合。例如文本框、单选按钮、复选框、下拉列表等。 用户经常填写的表…

​深入理解JMeter性能测试日志:分析并发用户行为与吞吐量指标

在进行软件性能测试时&#xff0c;使用Apache JMeter等工具能够生成详尽的测试报告和日志。这些数据对于评估应用程序的性能至关重要。本文将针对JMeter生成的压测日志数据进行详细解析&#xff0c;并解释特定字段的意义。 日志数据摘要&#xff1a; 以下是整个JMeter压测日志…

2024智能EDM邮件营销系统使用攻略

在数字化营销领域&#xff0c;智能EDM&#xff08;Electronic Direct Mail&#xff09;邮件营销作为一种高效、精准的推广方式&#xff0c;正日益受到企业的高度重视。而要实现这一策略的成功落地&#xff0c;一个高可靠性和高稳定性的专业邮件发送平台则是不可或缺的关键环节。…

前后端实时数据通信

实现前后端实时数据转换通常涉及到以下几个步骤&#xff1a; 后端提供数据转换接口。 前端实时数据获取。 前端实时数据转换。 前端实时展示转换后数据。 以下是一个简单的例子&#xff0c;假设后端提供了一个接口来转换某种数据格式&#xff0c;前端使用JavaScript和WebS…

大数据分析案例-基于决策树算法构建大学毕业生薪资预测模型

&#x1f935;‍♂️ 个人主页&#xff1a;艾派森的个人主页 ✍&#x1f3fb;作者简介&#xff1a;Python学习者 &#x1f40b; 希望大家多多支持&#xff0c;我们一起进步&#xff01;&#x1f604; 如果文章对你有帮助的话&#xff0c; 欢迎评论 &#x1f4ac;点赞&#x1f4…

前端发版上线出现白屏问题

目录 路由配置问题资源缓存问题首屏加载过慢 &#xff1a;喂&#xff0c;你的页面白啦&#xff01; 出现上线白屏的问题有很多&#xff0c;如&#xff1a;配置错误、缓存问题、浏览器兼容问题&#xff0c;根据不同情况去解决。 路由配置问题 问题描述&#xff1a; 在vue开发…

C语言中位运算介绍

在C语言中&#xff0c;位运算是一种对二进制位进行操作的运算方式&#xff0c;它可以对数据的二进制表示进行位级别的操作&#xff0c;包括按位与、按位或、按位异或、按位取反等。位运算常用于处理底层数据结构、优化代码性能以及实现各种算法。本文将深入介绍C语言中的位运算…

两区域二次调频风火机组,麻雀启发式算法改进simulink与matlab联合

区域1结果 区域2结果 红色曲线为优化后结果〔风火机组二次调频〕

软件杯 深度学习+opencv+python实现车道线检测 - 自动驾驶

文章目录 0 前言1 课题背景2 实现效果3 卷积神经网络3.1卷积层3.2 池化层3.3 激活函数&#xff1a;3.4 全连接层3.5 使用tensorflow中keras模块实现卷积神经网络 4 YOLOV56 数据集处理7 模型训练8 最后 0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &am…

鸿蒙操作系统-初识

HarmonyOS-初识 简述安装配置hello world1.创建项目2.目录解释3.构建页面4.真机运行 应用程序包共享包HARHSP 快速修复包 官方文档请参考&#xff1a;HarmonyOS 简述 1.定义&#xff1a;HarmonyOS是分布式操作系统&#xff0c;它旨在为不同类型的智能设备提供统一的操作系统&a…

vue3中onUnmounted详解

在 Vue 3 中&#xff0c;onUnmounted 是一个生命周期钩子&#xff0c;它会在组件实例被卸载&#xff08;unmounted&#xff09;和销毁之前被调用。这个钩子特别有用&#xff0c;因为它允许你在组件卸载时执行一些清理工作&#xff0c;比如取消定时器、移除事件监听器、清理手动…

JavaScript if用法练习

编写一个“个人所得税计算器”函数&#xff0c;练习if的用法 编写一个“个人所得税计算器”函数&#xff0c;接收一个参数表示一个工资值&#xff0c;方法最终返回该工资值应缴纳的个人所得税金额。假设个税计算梯度如下&#xff1a; * 3500元以下部分免征 * 3500~5000的部分缴…

jforgame-socket快速入门

1.jforgame-socket开发背景 1.1socket介绍 Socket是用于在计算机网络中实现通信的编程接口。它提供了一种通过网络在不同计算机之间传输数据的方式。不同http基于请求-响应模式&#xff0c;socket是全双工的&#xff0c;允许服务器、客户端同时向另外一端发送数据。由于socke…

电脑windows 蓝屏【恢复—无法加载操作系统,原因是关键系统驱动程序丢失或包含错误。.......】

当你碰到下图这种情况的电脑蓝屏&#xff0c;先别急着重装系统&#xff0c;小编本来也是想重装系统的&#xff0c;但是太麻烦&#xff0c;重装系统后你还得重装各种软件&#xff0c;太麻烦了&#xff01;&#xff01; 这种情况下&#xff0c;你就拿出你的启动U盘&#xff0c;进…

2016国赛-路径之谜

分析&#xff1a; 看到n*n以及四个方向移动&#xff0c;那么就直接使用dfs即可。根据题意可知起始位置是(0,0)&#xff0c;终点位置是(n-1,n-1)。 又有要求靶子上的箭数决定了走的路径&#xff0c;那么我们就要加一个判断各个方位的箭数是否符合要求。 示例代码&#xff1a; …

「CISP题库精讲」CISP题库习题解析精讲4道

第一题 以下关于互联网协议安全(InternetProtocolSecurity,IPSec)协议,说法错误的是?() A.在传送模式中,保护的是IP负载。 B.验证头协议(AuthenticationHeader,AH)和IP封装安全负载协议(EncapsulatingSecurityPayload,ESP)都能以传输模式和隧道模式工作。 C.在隧道模…