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 tqdm


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()
    # 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条缓存写入一次本地excel
    r = 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”公众号,欢迎关注与我一起交流学习。还可以通过公众号添加我的私人微信。

本文章已经生成可运行项目
本资源为截至2025全国1A–5A旅游景区空间分布数据集,内容涵盖全国所有等景区的经纬度、所属省份、等、地址等属性信息。数据以可编辑MXD文件、标准Shape格式、Excel表格及标准成图TIF版本提供,便于多平台、多用途使用。 原始数据来源于国家相关部门公布的最新A景区名录,结合省文旅部门及官方地理信息数据进行空间校核与精细化整理。经坐标统一与属性核验处理后,确保每个景区的地理位置准确无误,属性字段包括:景区名称、等(1A–5A)、所属省份、地址、经纬度坐标及景区等,每个等景区单独形成为一个shp文件。 MXD文件中已预设图层符号化方案,不同等景区以颜色和符号区分,用户可直接打开进行地图制图或符号样式修改;Shape文件提供标准矢量数据结构,可在ArcGIS、QGIS等GIS平台中加载使用;Excel版本便于快速检索、统计与分析;TIF版本为标准成图成果,可直接用于报告或展示。 本数据采用WGS84坐标系,精度高、兼容性强,可广泛应用于旅游资源空间分布分析、区域旅游规划、文旅融合研究及相关教学可视化展示。资源数据经过严格核对与清洗,能够真实反映2025年中国1A至5A景区的空间格局与分布特征。 打开MXD文件前请确保所有压缩包已解压至同一目录,以保证图层路径正常加载。在统计过程中,可能会有极少量景区漏掉或者错放,如果下载后发现有问题,可随时联系博主进行更新。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值