利用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爬取全国水雨情信息的主要内容,如果未能解决你的问题,请参考以下文章