利用python爬取全国水雨情信息

Posted 有我之境

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了利用python爬取全国水雨情信息相关的知识,希望对你有一定的参考价值。

分析

我们没有找到接口,所以打算利用selenium来爬取。

代码

import datetime
import pandas as pd
from bs4 import BeautifulSoup
from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.chrome.options import Options #建议使用谷歌浏览器
import time
chrome_options = Options()
chrome_options.add_argument(\'--headless\')
driver = webdriver.Chrome()


# 存储中英文对应的变量的中文名
word_dict = {"poiBsnm": "流域",
             "poiAddv": "行政区",
             "rvnm": "河名", 
             "stnm": "站名",
             "tm": "时间", 
             "zl": "水位(米)",
             "ql": "流量(立方米/秒)",
             "wrz": "警戒水位(米)"}

# 空df接收结果
rain_total = pd.DataFrame([])


url = \'http://xxfb.mwr.cn/sq_dxsk.html\'
driver.get(url)
time.sleep(5)
infos = driver.find_elements_by_xpath("/html/body//tbody[@id=\'DataContainer\']/tr")

# pd.set_option(\'display.max_columns\', None)#所有列
# pd.set_option(\'display.max_rows\', None)#所有行


# 列表提取
for info in infos:
    poiBsnm = info.find_element_by_xpath("./td[1]").text
    poiAddv = info.find_element_by_xpath("./td[2]").text
    rvnm = info.find_element_by_xpath("./td[3]").text
    stnm = info.find_element_by_xpath("./td[4]").text
    tm = info.find_element_by_xpath("./td[5]").text
    zl = info.find_element_by_xpath("./td[6]").text
    ql = info.find_element_by_xpath("./td[7]").text
    wrz = info.find_element_by_xpath("./td[8]").text
    
# 组成pandas对象
    rain_data = [[poiBsnm,poiAddv,rvnm,stnm,tm,zl,ql,wrz]]  
    rain_df = pd.DataFrame(data=rain_data,columns=list(word_dict.values()))
    rain_total = pd.concat([rain_total,rain_df])
    print(rain_total)
# 关闭浏览器
driver.close()

# 保存数据
data_str = datetime.datetime.now().strftime(\'%Y_%m_%d\')
rain_total.to_csv("%s_全国水雨情信息.csv" % (data_str),index=None, encoding="GB18030")

结果

反思

时间爬取出现了一点问题,我也很不理解,其次,循环哪里应该可以简洁代码,写的不是很好,第三,没有形成模块化的代码。还有就是谢谢崔工的支持。

水雨情遥测终端机RTU

计讯物联水雨情遥测终端RTU,支持对接雨量计、水位计、流量计、温湿度计、摄像头等传感仪表,完成水雨情数据采集、平台上报、异常告警、远程控制等功能,实现水雨情远程自动监测及汛情科学预判。

水雨情遥测终端机RTU
《水文监测数据通信规约》(ASCII和HEX全项)、《水资源监测数据传输规约》和其他省市特殊规约、SL180-2015水文自动测报系统设备遥测终端机。
GPRS/4G无线蜂窝网络、短信、RS232/RS485,NB-IOT、北斗等通信。
经过高EMC电磁兼容测试,耐高低温材料(-35℃至75℃),宽压(5V-35V),防潮、防雷、防电磁干扰。
三级看门狗检测机制,智能软件唤醒和硬件断电重启机制,设备自动复位;采用PPP层心跳、KeepAlive、TCP心跳链路检测机制、网络故障自动恢复、掉线重连。
支持远程参数配置,同时支持平台配置方式和短信配置方式。
支持翻斗式雨量计接口、RS232、RS485、模拟量输入、开关量输入和开关量输出、格雷码(预留)接口。
数据多中心上报,可同时上报省、市、县级水资源监控管理平台和省级水资源税接收平台。

计讯物联水雨情遥测终端RTU广泛应用于地表水供水渠道(管道)、行政边界控制断面、入河(湖)排污口以及河流、水库、湖泊等水源地的水量、水质、水位、降雨量、现场图像进行远程监测,并可对水泵、阀门、闸门等设备进行远程控制或自动控制。

以上是关于利用python爬取全国水雨情信息的主要内容,如果未能解决你的问题,请参考以下文章

水务监测平台有效配合水库水雨情监测解决方案

拉勾网爬取全国python职位并数据分析薪资,工作经验,学历等信息

全国315个城市,用python爬取肯德基老爷爷的店面信息

利用Python爬取房价信息(附代码)

利用Python爬取OPGG上英雄联盟英雄胜率及选取率信息

利用Python自动搜索指定京东商品并爬取商品信息