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

news2024/9/21 8:03:24

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.coloradmin.cn/o/1597187.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

wangzherongyao 2024.04.15

第一局:百里陪那只重置技能CD的辅助,对面有兰陵王,妲己,然后我补位廉颇被自己人和对面一阵嘲讽,真的不想说啥,对面盾山和妲己估计都没明白,我一只就能破他们队伍,所以看到没先出魔抗…

【拦截器Interceptor】springboot拦截器的使用和原理

【拦截器Interceptor】springboot拦截器的使用和原理 【一】拦截器简介(1)简介【2】作用 【二】实现步骤【1】自定义拦截器,实现拦截器接口HandlerInterceptor【2】将拦截器添加到容器当中【3】配置拦截器的拦截规则【4】拦截器的执行顺序 【…

HCIP-Datacom(H12-821)111-120题

111、地址转换技术的优点不包括()? A.地址转换可以使内部网络用户(私有IP地址)方便地访问Internet B.地址转换可以屏蔽内部网络的用户提高内部网络的安全性 C.地址转换可以使内部局城网的许多主机共享一个IP地址上网D.地址转换能够处理IP报头加密的情况 解析:地址转换只处理…

Python远程创建docker容器

1.安装docker yum install dockerdocker -v 2.拉取一个测试镜像,比如tomcat,默认是最新版本的 docker pull tomcat 使用 docker images可以看到该镜像 3.使用Python创建容器 import docker# 连接到远程Docker守护进程 client docker.DockerClient(…

今年消费新潮流:零元购商业模式

今天给大家推荐一种极具创新的电子商务模式:零元购商业模式 这个模式支持消费者以零成本或极低成本购买商品。这种模式主要通过返现、积分、优惠券等方式来减少支付金额,使消费者实现“零成本”购物的目标。 人民网在去年发表了一篇文章。 总结了一下&a…

麒麟服务器操作系统安装HTTP服务

往期好文:麒麟服务器操作系统安装TFTP服务 Hello,大家好啊!今天我们将探讨如何在麒麟服务器操作系统上安装和配置HTTP服务,这是任何网络服务或应用的基础。无论你是想建立一个简单的网站,还是需要一个全功能的Web服务器…

基于微信小程序【原生】+ssm+mysql+jsp消防知识学习平台(含论文)

博主介绍: 大家好,本人精通Java、Python、C#、C、C编程语言,同时也熟练掌握微信小程序、Php和Android等技术,能够为大家提供全方位的技术支持和交流。 我有丰富的成品Java、Python、C#毕设项目经验,能够为学生提供各类…

酸雨降水问题——多元回归分析

目录 题目如下 数据集如下 解题方法 regress 函数 代码实现 得出结果 题目如下 酸雨是降水中各种离子综合作用的结果。实际检测表明:城市降水pH值主要 受酸性离子[SO]、[NO]、[Ca]、[NH]影响。下表列出了我国部分城市降水 中[SO]、[NO]、[Ca⁺]、[NH]的浓度和pH值数据。以…

Linux程序调试优化(1)——内存占用详解及优化思路

文章目录 1.free查看总体的内存占用2./proc/$PID/status 查看某进程状态 linux开发最重要的两个参数,分别是内存以及CPU使用率,若内存出现严重不足,则在需要使用内存时,可能出现申请不到的情况,导致 OOM,L…

如何实现对空调状态监测的监控

随着科技的飞速发展和人们生活水平的持续提高,空调已经成为现代家庭和办公环境中不可或缺的一部分。然而,传统的空调使用方式往往存在能效低下、操作不便等问题。为了解决这些问题,智能空调控制器应运而生,它不仅能实现对空调状态…

Java使用OpenOffice将office文件转换为PDF

Java使用OpenOffice将office文件转换为PDF 1. 先行工作1.1 OpenOffice官网下载1.2 JODConverter官网下载1.3 下载内容 2.介绍3. 安装OpenOffice服务3.1.Windows环境3.2 Linux环境 4. maven依赖5. 转换代码 1. 先行工作 请注意,无论是windows还是liunx环境都需要安装…

zookeeper分布式应用程序协调服务+消息中间件kafka分布式数据处理平台

一、zookeeper基本介绍 1.1 zookeeper的概念 Zookeeper是一个开源的分布式的,为分布式框架提供协调服务的Apache项目。 是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、…

半导体材料(一)

本篇为西安交通大学本科课程《电气材料基础》的笔记。 本篇为这一单元的第一篇笔记,下一篇传送门。 半导体是导电能力介于均属导体和绝缘体之间的固体材料。 半导体基本特征 室温下其电阻数量级约为 1 0 − 6 ∼ 1 0 8 Ω ⋅ m 10^{-6}\sim10^{8}\mathrm{\Omega…

供应IMX415-AAQR-C索尼芯片

长期供应各进口品牌芯片现货: IMX415-AAQR-C IMX492LLJ-C IMX492LQJ-C IMX455ALK-K IMMX455AQK-K IMX461ALR-C IMX461AQR-C IMX661-AAMR-C IMX661-AAQR-C IMX411ALR-C IMX411AQR-C IMX290LQR-C FS32K118LFT0MLHT FS32K146UAT0VLLT FS32K146UAT0VLQT …

什么数据集成(Data Integration):如何将业务数据集成到云平台?

说到数据集成(Data Integration),简单地将所有数据倒入数据湖并不是解决办法。 在这篇文章中,我们将介绍如何轻松集成数据、链接不同来源的数据、将其置于合适的环境中,使其具有相关性并易于使用。 数据集成&#xff1…

机器学习实训 Day1(线性回归练习)

线性回归练习 Day1 手搓线性回归 随机初始数据 import numpy as np x np.array([56, 72, 69, 88, 102, 86, 76, 79, 94, 74]) y np.array([92, 102, 86, 110, 130, 99, 96, 102, 105, 92])from matplotlib import pyplot as plt # 内嵌显示 %matplotlib inlineplt.scatter…

针对MaxCompute优化案例分享

声明 原文来源:微信公众号:阿里云开发者 前言 MaxCompute 是阿里巴巴集团推出的一种大数据计算平台,用于处理海量数据和进行数据分析。它提供了高可靠性、高扩展性和高性能的数据处理能力,支持 SQL 查询、MapReduce 计算和机器…

【快捷部署】017_MongoDB(6.0.14)

📣【快捷部署系列】017期信息 编号选型版本操作系统部署形式部署模式复检时间017MongoDB6.0.14Ubuntu 20.04apt单机2024-04-11 一、快捷部署 #!/bin/bash ################################################################################# # 作者:…

链表基础3——单链表的逆置

链表的定义 #include <stdio.h> #include <stdlib.h> typedef struct Node { int data; struct Node* next; } Node; Node* createNode(int data) { Node* newNode (Node*)malloc(sizeof(Node)); if (!newNode) { return NULL; } newNode->data …

ceph集群管理节点高可用

一、前言 ceph集群想要高可用也必须要有多个管理节点&#xff0c;不然只有单管理节点&#xff0c;在一个管理节点挂了的情况下就没法进行集群的管理&#xff0c;可以分为web管理和客户端管理&#xff0c;web管理和mgr服务相关&#xff0c;客户端管理和mon服务相关 二、部署 mg…