Python实战:采集全国5A景点名单

本文将以采集全国 5A 景点名单为例,详细介绍如何使用 Python 进行数据采集。

本文采集到全国340家5A景区的名单,包括景区名称地区A级评定年份这些字段。

一、分析数据源

为了获取权威数据,我们来到主管部门的官方网站,在右上角搜索框内搜索“5A”。

可以看到搜索结果有一个列表,通过翻页可以查询到全国所有 5A 景区的景区名称地区A级评定年份这些字段。

在浏览器右键,检查,找到请求 url、请求方式。

找到请求需要携带的参数。

分析返回的 response,content 下面就是我们需要的数据。

通过以上分析,可以发现想要获取到数据并不难。

接下来,我们可以通过 Python 代码,轻松采集到这些字段信息。

二、开始写代码

1、导入库

import requests
import time
from DataRecorder import Recorder
from tqdm import tqdm

2、请求数据

headers = {'User-Agent': '' #填写自己的
}
json_data = {'directoryId': '4','searchList': [],'size': 5,'page': 1,
}response = requests.post('https://www.mct.gov.cn/tourism/api/content/getContentListByDirId',headers=headers, json=json_data).json()

3、处理response

# contents包含本页景区信息
contents = response['data']['contentList']['content']
# 当前页景区数量
content_num = len(contents)
print(f"**********第{page}页有{content_num}个景区**********")
# 提取每个景区信息:'景区名称'、'地区'、 'A级'、'评定年份'
for content in contents:name = content['name']provinceName = content['provinceName']gradesName = content['gradesName']year = content['year']# 景区信息放入一个字典content_dict = {'景区名称': name, '地区': provinceName, 'A级': gradesName, '评定年份': year}print(content_dict)

这样简单几行代码,就可以完成数据采集了,Pycharm 控制台输出如下。

接下来,可以完善代码,把采集每页景点信息的代码封装为一个函数+实现翻页采集数据+数据存储。

4、封装函数

def get_info(page):headers = {'User-Agent':  #填写自己的}json_data = {'directoryId': '4','searchList': [],'size': 5,'page': page,}response = requests.post('https://www.mct.gov.cn/tourism/api/content/getContentListByDirId',headers=headers, json=json_data).json()......

5、翻页采集数据

# 获取第1页到68页的景点信息
for page in tqdm(range(1, 69)):# 调用获取景区信息的函数get_info(page)# 翻页之间设置3秒等待,减小对方网站压力time.sleep(3)

6、数据存储到excel

# 获取当前时间
current_time = time.localtime()
# 格式化当前时间
formatted_time = time.strftime("%Y-%m-%d %H%M%S", current_time)
# 初始化文件
init_file_path = f'全国5A景点名单-{formatted_time}.xlsx'
# 新建一个excel表格,用来保存数据,每500条缓存写入一次本地excel
r = Recorder(path=init_file_path, cache_size=500)
# 景区信息写入缓存
r.add_data(content_dict)
# 避免数据丢失,爬虫结束时强制保存excel文件
r.record()

三、完整代码如下

import requests
import time
from DataRecorder import Recorder
from tqdm import tqdmdef get_info(page):headers = {'User-Agent':#填写自己的}json_data = {'directoryId': '4','searchList': [],'size': 5,'page': page,}response = requests.post('https://www.mct.gov.cn/tourism/api/content/getContentListByDirId',headers=headers, json=json_data).json()# contents包含本页景区信息contents = response['data']['contentList']['content']# 当前页景区数量content_num = len(contents)print(f"**********第{page}页有{content_num}个景区**********")# 提取每个景区信息:'景区名称'、'地区'、 'A级'、'评定年份'for content in contents:name = content['name']provinceName = content['provinceName']gradesName = content['gradesName']year = content['year']# 景区信息放入一个字典content_dict = {'景区名称': name, '地区': provinceName, 'A级': gradesName, '评定年份': year}print(content_dict)# 景区信息写入缓存r.add_data(content_dict)if __name__ == '__main__':# 获取当前时间current_time = time.localtime()# 格式化当前时间formatted_time = time.strftime("%Y-%m-%d %H%M%S", current_time)# 初始化文件init_file_path = f'全国5A景点名单-{formatted_time}.xlsx'# 新建一个excel表格,用来保存数据,每500条缓存写入一次本地excelr = Recorder(path=init_file_path, cache_size=500)# 获取第1页到68页的景点信息for page in tqdm(range(1, 69)):# 调用获取景区信息的函数get_info(page)# 翻页之间设置3秒等待,减小对方网站压力time.sleep(3)# 避免数据丢失,爬虫结束时强制保存excel文件r.record()

Pycharm 控制台输出如下:

总计获取到 340 个 5A 景区信息,excel 截图如下:

四、数据分析

接下来,可以进行数据分析,由于不是本文重点,而且我之前发过类似文章,就不展开写了,有兴趣的读者可以自行尝试。

比较有趣的是,黄河壶口瀑布旅游区(陕西省延安市·山西省临汾市)这个景区同时属于山西陕西两个地区,官方网站把他算作 2 条数据,所以也可以说全国有 339 个或 340 个 5A 景区。

五、总结

通过以上步骤,编写这个简单的 Python 代码,就获取到了官方发布的全国 5A 景点信息,一共是 340 个。

这个过程包括获取网页源代码、解析网页源代码、提取所需数据和存储数据等环节。掌握了这些技能,我们可以更加高效地在网上采集所需的信息,为数据分析提供有力支持。

世界那么大,我想去看看。

本文首发在“程序员coding”公众号,欢迎关注与我一起交流学习。还可以通过公众号添加我的私人微信。

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

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

相关文章

学生打架校园防霸凌系统可以监测到吗

随着社会的进步和教育的发展,校园安全问题日益受到社会各界的关注。其中,学生打架和校园霸凌问题尤为突出,不仅影响了学生的身心健康,也破坏了校园的和谐氛围。为了有效预防和应对这些问题,许多学校开始引入校园防霸凌…

origin修改图例为显示”长名称/单位/注释/自定义“等

背景 由于在origin作图时希望修改自动显示的图例,但每次手动更新又比较繁琐(特别是在数据量较多的情况下),为了一劳永逸 步骤 1. 在数据工作表中设置好需要修改后的名称(我写到长名称里了) 2. 修改图例的…

【原创】[新增]ARCGIS之土地报备Txt、征地Xls格式批量导出Por旗舰版

一、软件简介 2024年新增旗舰版软件,本软件全新界面开发,保留原有软件功能及一些使用习惯,并集成了现已有的所有定制格式的支持,并增加自定义格式的导出;做到1N2(即为1种通用版本N种定制格式导出txt、Xls&a…

C++ 作业 24/3/13

1、设计一个Per类&#xff0c;类中包含私有成员:姓名、年龄、指针成员身高、体重&#xff0c;再设计一个Stu类&#xff0c;类中包含私有成员:成绩、Per类对象p1&#xff0c;设计这两个类的构造函数、析构函数和拷贝构造函数。 #include <iostream>using namespace std;c…

IU5070E线性单节锂电池充电管理IC

IU5070E是一款具有太阳能板最大功率点跟踪MPPT功能&#xff0c;单节锂离子电池线性充电器&#xff0c;最高支持1.5A的充电电流&#xff0c;支持非稳压适配器。同时输入电流限制精度和启动序列使得这款芯片能够符合USB-IF涌入电流规范。 IU5070E具有动态电源路径管理(DPPM)功能&…

数据库管理-第160期 Oracle Vector DB AI-11(20240312)

数据库管理160期 2024-03-12 数据库管理-第160期 Oracle Vector DB & AI-11&#xff08;20240312&#xff09;1 向量的函数操作to_vector()将vector转换为标准值vector_norm()vector_dimension_count()vector_dimension_format() 2 将向量转换为字符串或CLOBvector_seriali…

用友U8 Cloud base64 SQL注入漏洞复现

0x01 产品简介 用友U8 Cloud是用友推出的新一代云ERP&#xff0c;主要聚焦成长型、创新型企业&#xff0c;提供企业级云ERP整体解决方案。 0x02 漏洞概述 用友U8 Cloud base64接口处存在SQL注入漏洞&#xff0c;未授权的攻击者可通过此漏洞获取数据库权限&#xff0c;从而盗…

Ubuntu 系统的基础操作

一. VMware虚拟机安装Ubuntu20.04 安装好就可以进系统了 二. Xshell连接Ubuntu 1.配置网络 2.去连接Xshell 然后输入用户名 xyl 和密码 123 就可以登录上去 三. Ubuntu的使用 1.简介和下载地址 简介&#xff1a; Ubuntu&#xff08;乌班图&#xff09;是一个基于Debian的以…

企智汇数字化项目管理平台,助力企业高效项目管理!数字化转型必备!

数字化项目管理平台是一种集成了先进项目信息技术的管理工具&#xff0c;旨在帮助组织更有效地管理项目&#xff0c;实现项目目标的顺利完成。以下是企智汇数字化项目管理平台的一些核心特点和功能&#xff1a; 1. 统一的信息管理&#xff1a;企智汇数字化项目管理平台能够将项…

助贷系统crm:帮助助贷机构实现高效的客户关系管理

助贷系统CRM&#xff08;客户关系管理系统&#xff09;是一种能够帮助助贷企业实现高效客户关系管理的工具&#xff0c;通过助贷系统CRM&#xff0c;助贷企业可以更好地管理企业客户信息&#xff0c;跟踪客户互动、提高客户满意度&#xff0c;从而促进业务增长。 1. 客户信息集…

【竞技宝】CS2:VP2-0轻取Heroic晋级IEM达拉斯正赛

北京时间2024年3月13日,IEM达拉斯欧洲区封闭预选赛正在如火如荼,今天迎来了胜者组决赛VP对阵Heroic。本场比赛,VP在图一死亡游乐园打出招牌式的慢节奏进攻,Heroic始终无法抵抗住VP压时间的进攻,最终VP赢下图一。来到图二荒漠迷城之后,Heroic一度取得比分的领先,但VP在最后阶段连…

Python应用数值方法:工程与科学实践指南

信息技术时代的挑战与机遇 我们正处在一个信息技术高速发展的时代&#xff0c;这是一个科技与创新蓬勃发展的时代。大数据与人工智能的崛起&#xff0c;正以前所未有的速度推动着传统技术的智能化变革。这种变革不仅带来了前所未有的机遇&#xff0c;也对科学和工程技术人员的…