python爬取全国水雨情信息详解

 更新时间:2021年10月21日 10:35:43   作者:韩起  
这篇文章主要为大家详细介绍了python爬取全国水雨情信息,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

分析.png

分析

我们没有找到接口,所以打算利用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")

结果

结果.png

总结

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

本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注脚本之家的更多内容!

相关文章

  • python实现K折交叉验证

    python实现K折交叉验证

    这篇文章主要为大家详细介绍了python实现K折交叉验证,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-04-04
  • 基于Python实现图片浏览器的应用程序

    基于Python实现图片浏览器的应用程序

    图像浏览器应用程序是一种非常常见和实用的工具,这篇文章就来为大家介绍一下如何使用Python编程语言和wxPython库创建一个简单的图像浏览器应用程序,感兴趣的可以了解下
    2023-10-10
  • python单例设计模式实现解析

    python单例设计模式实现解析

    这篇文章主要介绍了python单例设计模式实现解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-01-01
  • Selenium基于PIL实现拼接滚动截图

    Selenium基于PIL实现拼接滚动截图

    这篇文章主要介绍了Selenium基于PIL实现拼接滚动截图,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-04-04
  • python脚本请求数量达到上限,http请求重试问题

    python脚本请求数量达到上限,http请求重试问题

    这篇文章主要介绍了python脚本请求数量达到上限,http请求重试问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-06-06
  • python用字符组成图像代码实例

    python用字符组成图像代码实例

    大家好,本篇文章主要讲的是python用字符组成图像代码实例,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下,方便下次浏览
    2022-01-01
  • python 实现12bit灰度图像映射到8bit显示的方法

    python 实现12bit灰度图像映射到8bit显示的方法

    这篇文章主要介绍了python 实现12bit灰度图像映射到8bit显示的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-07-07
  • Python迭代器与生成器基本用法分析

    Python迭代器与生成器基本用法分析

    这篇文章主要介绍了Python迭代器与生成器基本用法,结合实例形式分析了Python迭代器与生成器的基本功能、定义及使用方法,需要的朋友可以参考下
    2018-07-07
  • python 生成xml文件,以及美化的实例代码

    python 生成xml文件,以及美化的实例代码

    这篇文章主要介绍了python 生成xml文件,以及美化的实例代码,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-04-04
  • Python调用scp向服务器上传文件示例

    Python调用scp向服务器上传文件示例

    今天小编就为大家分享一篇Python调用scp向服务器上传文件示例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-12-12

最新评论