爬虫 | 垃圾处理设施数据的获取与保存

news/2024/5/17 19:28:30

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()

http://www.mrgr.cn/p/46787247

相关文章

[8] UE C++ Mario

创建了盒子 , 定义了盒子的碰撞位置能在if里面直接声明赋值局部变量 但不能赋值成员变量 friend关键词应用 导入类的时候如果是灰色就删掉 , 并且查看头文件

obsidian和typora图片兼容问题

1.打开obsidian的第三方插件-->插件市场 找到Custom Attachment Location下载(当然这个也是需要一点魔法的)2.配置obsidian的文件与链接3.配置obsidian的Custom Attachment Location插件4.typora的文件路径 配置一样即可最后对比,两个程序之间可以相互查看文件了

VS2015 查找结果明细没显示问题

今天使用VS2015查找数据的时候,只显示了统计结果,没显示明细 找了下解决方案,需要修改注册表配置 1.打开注册表以下路径 HKEY_CLASSES_ROOT\WOW6432Node\CLSID\{73B7DC00-F498-4ABD-AB79-D07AFD52F395}\InProcServer32 2.将默认值修改为 TextMgrP.dll 文件所在路径 例如: C…

Python教学入门:函数

在 Python 中,def 关键字用于定义函数。函数是一段可重用的代码块,用于执行特定的任务或操作。通过定义函数,可以将一段代码封装起来,使其可以在程序中被多次调用,提高代码的复用性和可维护性。 下面是 def 函数定义的…

2024.4.13 Python 爬虫复习day01

目录 day01_HTTP协议HTML页面web服务器 各类名词解释 URL统一资源定位符 HTTP协议 HTML页面 知识点: 第一个页面 标题标签和图片标签 注册页面 登录页面 WEB服务器 安装fastapi和uvicorn 原始命令方式 镜像源命令方式 工具方式 快速搭建web服务器 知识点: 示例…

设计模式———单例模式

单例也就是只能有一个实例,即只创建一个实例对象,不能有多个。 可能会疑惑,那我写代码的时候注意点,只new一次不就得了。理论上是可以的,但在实际中很难实现,因为你无法预料到后面是否会脑抽一下~~因此我们…

Codes 重新定义 SaaS 模式的研发项目管理平台开源版 4.5.3 发布

Codes 是一个 开源、高效、简洁、轻量的一站式研发项目管理平台。包含需求管理,任务管理,测试管理,缺陷管理,自动化测试,cicd 等功能; Codes 重新定义 SaaS 模式 = 云端认证 + 程序及数据本地安装 + 不限功能 + 30 人免费一:简介Codes 重新定义 SaaS 模式 = 云端认证 …

【微信小程序】解决分页this.setData数据量太大的限制问题

1、原始方法,每请求一页都拿到之前的数据concat一下后整体再setData loadData() {let that thislet data {}data.page this.data.pagedata.size this.data.sizefindAll(data).then(res > {if (res.data.code 1) {this.setData({dataList: this.data.dataLi…

synchronization(同步)

并发进程之间的关系在内存中同时存在的若干个进程/线程,由操作系统的调度程序采用适当的策略将他们调度至cpu上运行,同时维护他们的状态队列。多个并发进程/线程从宏观上是同时在运行; 从微观的角度看,他们的运行过程是走走停停; 并发的进程/线程是交替执行(Interleaving…

修改中文、英文参考文献在文末列表中的顺序:EndNote

本文介绍在EndNote软件中,使得参考文献按照语种排列,中文在前、英文在后的方法~本文介绍在EndNote软件中,使得参考文献按照语种排列,中文在前、英文在后的方法。前期我们在EndNote参考文献格式Output Styles界面介绍一文中,详细介绍了文献管理软件EndNote的引用格式自定义…

网络编程ServerSocketChannel

ServerSocketChannel 1 非阻塞 vs 阻塞1.1 阻塞1.2 非阻塞1.3 多路复用 2 Selector2.1 创建2.2 绑定 Channel 事件2.3 监听 Channel 事件2.4 💡 select 何时不阻塞 3 处理 accept 事件💡 事件发生后能否不处理 4 处理 read 事件4.1 💡 为何要…

蓝桥杯2024年第十五届省赛真题-宝石组合

思路:参考博客,对Ha,Hb,Hc分别进行质因数分解会发现,S其实就等于Ha,Hb,Hc的最大公约数,不严谨推导过程如下(字丑勿喷): 找到此规律后,也不能枚举Ha&#xff…

SURE:增强不确定性估计的组合拳,快加入到你的训练指南吧 | CVPR 2024

论文重新审视了深度神经网络中的不确定性估计技术,并整合了一套技术以增强其可靠性。论文的研究表明,多种技术(包括模型正则化、分类器改造和优化策略)的综合应用显着提高了图像分类任务中不确定性预测的准确性 来源:晓飞的算法工程笔记 公众号论文: SURE: SUrvey REcipes…

基于face_recognition实现的人脸识别功能

环境Python 3.11.8 dlib == 19.24.4 opencv-python == 4.9.0.80 numpy == 1.26.4 face_recognition == 1.3.0通过本地图片采集人脸编码 import os import cv2 import face_recognition encode_list = [] image_field_path = os.path.join(., images) images_file_list = os.lis…

Spring Boot 目前还是最先进的吗?

当谈到现代Java开发框架时,Spring Boot一直处于领先地位。它目前不仅是最先进的,而且在Java生态系统中拥有着巨大的影响力。 1. 什么是Spring Boot? Spring Boot是由Spring团队开发的开源框架,旨在简化基于Spring的应用程序的开…

4.10 + (double)(rand()%10)/100.0

机房是我家黑色星期四 坏消息: 没有奥赛课,所以大概率调不出来 CF1479D 好消息: 5k 回来了,调题有望 🥰 中午起床直接来的机房,有学科自习就说我不知道 结果被叫回去了 😢 而且今天班里没水了,趁着大课间跑操又去了一趟机房,赢 奥赛大会 老规矩颁奖典礼打头 不一样的…

RAG 2.0架构详解:构建端到端检索增强生成系统

关于检索增强生成(RAG)的文章已经有很多了,如果我们能创建出可训练的检索器,或者说整个RAG可以像微调大型语言模型(LLM)那样定制化的话,那肯定能够获得更好的结果。但是当前RAG的问题在于各个子模块之间并没有完全协调,就像一个缝合怪一样,虽然能够工作但各部分并不和…

东方博宜 1157. 最小数

东方博宜 1157. 最小数 今天不想写思路&#xff0c;乱糟糟的&#xff0c;能运行就拉倒了 #include <iostream> using namespace std; int main() {int n ;int a[201] ;cin >> n ;for(int i 1 ; i < n ; i){cin >> a[i] ; } int j ;j 1 ;for(int i 1…

Java对接第三方接口C#语言 请求是xml格式方式

文章目录 目录 文章目录 安装流程 小结 概要写法流程技术细节小结 概要 实现方式通过标签方式获取一个Body内标签的信息一步一步解析到需要获取到的数据信息 写法流程 技术细节 先和对面对接项目的开发拿到postman接口数据信息&#xff0c;然后再本地跑通接口&#xff0c;再进…

荣誉

荣誉 个人 学习委员 国防教育先锋队 朋辈导师 优秀团员 省级三好学生 职业技能大赛网络安全 河南省第七届御网杯信息安全大赛三等奖第二十届全国大学生信息安全对抗技术竞赛 ​ 数通 H3C认证路由交换网络工程师.pdf H3CSE-RS-IPv6.pdf 华为ICT网络赛道三等奖华为 HarmonyOS应用…