Hi,大家好,我是半亩花海。本项目通过发送网络请求(requests),从指定的 URL 获取垃圾处理设施的相关数据,并将数据保存到 CSV 文件中,以供后续分析和利用。
目录
一、项目结构
二、详细说明
三、注意事项
四、代码解析
1. 导入必要的库
2. 定义 LaJi 类并初始化
3. 获取数据
4. 主程序
五、完整代码
一、项目结构
- laji.py:Python 脚本文件,包含以下内容:
- 导入了 requests 库,用于发送网络请求。
- 定义了一个名为 LaJi 的类,负责处理垃圾数据的获取和保存。
get_Data
方法用于发送网络请求获取数据,并将数据解析后保存到 CSV 文件中。
二、详细说明
LaJi 类
-
__init__
方法:- 初始化了请求头
headers
,用于模拟浏览器发送请求。 - 设置了请求的URL地址。
- 初始化了请求头
-
get_Data
方法:- 使用 requests 库发送 GET 请求获取数据。
- 解析响应的 JSON 数据。
- 将数据逐行写入 CSV 文件,包括垃圾处理设施的名称、创建时间、地区名称、设施代码、地址、制造日期、电力信息、环境负责人、锅炉数量等字段。
三、注意事项
- 请确保网络连接正常,以便顺利获取数据。
- 在获取和使用数据时,请遵守相关法律法规,保护数据的隐私和版权。
四、代码解析
1. 导入必要的库
导入 Python 的requests
库,用于发送 HTTP 请求,并且可以方便地处理返回的响应数据。
import requests # 发送网络请求的工具包,可以返回响应的数据
2. 定义 LaJi
类并初始化
class LaJi():def __init__(self):self.headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.0.0 Safari/537.36'}self.url = 'https://ljgk.envsc.cn/OutInterface/GetPSList.ashx?regionCode=0&psname=&SystemType=C16A882D480E678F&sgn=fda6bbcb85cbdb565fe8f59c7d78769b5828076b&ts=1658475012897&tc=30317059'
3. 获取数据
定义了一个名为 get_Data
的方法,用于获取数据并保存到 CSV 文件中。首先,使用 requests.get
方法发送 GET 请求获取数据,然后通过 response.json()
方法将响应数据解析为 JSON 格式。接着,遍历数据,逐个提取垃圾处理设施的各个字段的值,并将这些值写入 CSV 文件中。
def get_Data(self):response = requests.get(self.url, headers=self.headers)data = response.json()for i in data:ps_name = i['ps_name']create_time = i['create_time']fullregion_name = i['fullregion_name']ps_code = i['ps_code']address = i['address']manufacture_date = i['manufacture_date']electric_power = i['electric_power']environment_principal = i['environment_principal']boiler_num = i['boiler_num']with open('垃圾.csv', 'a+') as f:f.write('{},{},{},{},{},{},{},{},{}\n'.format(ps_name, create_time, fullregion_name, ps_code, address,manufacture_date, electric_power, environment_principal,boiler_num))
4. 主程序
使用 if __name__ == '__main__':
来判断是否是主程序入口。如果是主程序入口,则实例化 LaJi
类,并调用 get_Data
方法获取数据。
if __name__ == '__main__':lj = LaJi()lj.get_Data()
五、结果展示
六、完整代码
#!/usr/bin/env python
# -*- encoding: utf-8 -*-
import requests # 发送网络请求的工具包,可以返回响应的数据class LaJi():def __init__(self):self.headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.0.0 Safari/537.36'}self.url = 'https://ljgk.envsc.cn/OutInterface/GetPSList.ashx?regionCode=0&psname=&SystemType=C16A882D480E678F&sgn=fda6bbcb85cbdb565fe8f59c7d78769b5828076b&ts=1658475012897&tc=30317059'def get_Data(self):response = requests.get(self.url, headers=self.headers)# print(response.text)data = response.json()for i in data:print(i)ps_name = i['ps_name']create_time = i['create_time']fullregion_name = i['fullregion_name']ps_code = i['ps_code']address = i['address']manufacture_date = i['manufacture_date']electric_power = i['electric_power']environment_principal = i['environment_principal']boiler_num = i['boiler_num']# 保存数据with open('垃圾.csv', 'a+') as f:f.write('{},{},{},{},{},{},{},{},{}\n'.format(ps_name, create_time, fullregion_name, ps_code, address,manufacture_date, electric_power, environment_principal,boiler_num))if __name__ == '__main__':lj = LaJi()lj.get_Data()