Python使用requests与json解析Ajax数据实战

陆景行
陆景行
发布时间:2026-10-14 | 6人浏览过
原创

本文介绍如何使用Python的requests模块模拟HTTP请求获取Ajax接口数据,并结合内置json模块进行结构化解析。通过高德地图POI查询示例,演示从获取原始文本到提取嵌套字典中具体字段(如名称、地址、经纬度)的完整流程,为处理大量结构化数据提供基础模板。

JSON数据基础与Python处理概述

JSON作为一种轻量级的数据交换格式,常被用作配置文件的标准形式。

在数据处理领域,这类格式的文件是日常工作中频繁接触的对象。

Python语言内置了json模块,使用前只需在代码中导入即可调用。

 

开发者可以通过内置的帮助函数查看json模块的详细文档说明。

json模块包含load、loads、dump和dumps等常用方法,这些属于Python基础操作,此处不再赘述。

将JSON数据与数据库结合使用,在处理海量数据场景时具有显著优势。

利用Requests获取Ajax接口数据

接下来,我们将正式利用数据挖掘技术对JSON文件进行具体处理。

当前许多网站采用Ajax技术,因此大量数据以XHR(XMLHttpRequest)文件形式存在。

为了直观演示,这里选取一个地图网站作为案例对象。

通过浏览器开发者工具调试,我们可以捕获到相关的请求URL地址。

示例URL为:https://ditu.amap.com/service/poiInfo?id=B001B0IZY1&query_type=IDQ

随后,利用requests模块的get方法模拟浏览器发送HTTP请求,并获取返回的结果对象。

具体实现代码如下:


# coding=utf-8
__Author__ = "susmote"

import requests
url = "https://ditu.amap.com/service/poiInfo?id=B001B0IZY1&query_type=IDQ"

resp = requests.get(url)
print(resp.text[0:200])

在终端执行上述代码,输出结果如下所示。

使用Json模块解析数据结构

虽然数据已成功获取,但为了后续使用,必须利用json模块对原始数据进行结构化分析。

解析数据的代码如下:


import requests
import json

url = "https://ditu.amap.com/service/poiInfo?id=B001B0IZY1&query_type=IDQ"

resp = requests.get(url)

json_dict = json.loads(resp.text)

print(type(json_dict))

print(json_dict.keys())

对上述代码进行简要说明:

首先导入json模块,接着调用loads方法,将之前获取的响应文本作为参数传入该方法。

在终端运行该段代码,结果如下:

结果显示转换后的对象类型为<class 'dict'>,即与JSON字符串对应的字典结构。

由于对象已是字典类型,我们可以直接调用字典相关方法,例如使用keys方法查看键名。

执行keys方法后,返回三个主要键名:status、searcOpt和data。

接下来,我们将重点查看data键内部包含的具体数据内容。


import requests
import json

url = "https://ditu.amap.com/service/poiInfo?id=B001B0IZY1&query_type=IDQ"

resp = requests.get(url)

json_dict = json.loads(resp.text)

print(json_dict['data'])

在终端中运行以下代码以提取data字段:

运行结果展示了大量所需数据,例如:

此处未逐一列出所有字段,通过与网页前端显示内容对比,即可明确哪些数据具有实际价值。

提取嵌套数据与模板应用

随后通过代码进一步提取有用信息,并将其清晰格式化输出。


# coding=utf-8
__Author__ = "susmote"

import requests
import json

url = "https://ditu.amap.com/service/poiInfo?id=B001B0IZY1&query_type=IDQ"

resp = requests.get(url)

json_dict = json.loads(resp.text)

data_dict = json_dict['data']

data_list = data_dict['poi_list']

dis_data = data_list[0]

print('城市: ', dis_data['cityname'])
print('名称: ', dis_data['name'])
print('电话: ', dis_data['tel'])
print('区号: ', dis_data['areacode'])
print('地址: ', dis_data['address'])
print('经度: ', dis_data['longitude'])
print('纬度: ', dis_data['latitude'])

由于返回值为字典,经分析发现其结构为“字典嵌套列表,列表再嵌套字典”,通过层层解包即可成功获取目标数据。

为便于理解,此处将处理步骤分步列出,使逻辑更加清晰。

在终端运行该程序,即可获取我们期望的具体信息。

整个过程十分简便,该程序可作为通用模板,在获取其他来源信息时,仅需更换对应的URL即可。

例如,可以参考以下具体案例:

查询地点如“北京大学”。

 

或者查询“腾讯大厦”等地点。

数据挖掘的过程永无止境,希望大家多进行数据分析,从中挖掘出有价值的信息。

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表