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接口自动化测试之接口数据依赖的实现方法

    python接口自动化测试之接口数据依赖的实现方法

    这篇文章主要介绍了python接口自动化测试之接口数据依赖的实现方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-04-04
  • python随机取list中的元素方法

    python随机取list中的元素方法

    下面小编就为大家分享一篇python随机取list中的元素方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-04-04
  • python cx_Oracle的基础使用方法(连接和增删改查)

    python cx_Oracle的基础使用方法(连接和增删改查)

    这篇文章主要给大家介绍了关于python cx_Oracle的基础使用方法,其中包括连接、增删改查等基本操作,并给大家分享了python 连接Oracle 乱码问题的解决方法,需要的朋友可以参考借鉴,下面随着小编来一起学习学习吧。
    2017-11-11
  • Python Matplotlib 库使用指南

    Python Matplotlib 库使用指南

    这篇文章主要介绍了Python Matplotlib 库使用基本指南,通过本教程,我们学习了使用 Matplotlib 创建各种类型的图表和图形,Matplotlib 提供了丰富的函数和选项,以满足不同的数据可视化需求,需要的朋友可以参考下
    2024-01-01
  • Python实现图形用户界面和游戏开发的方法和技巧

    Python实现图形用户界面和游戏开发的方法和技巧

    GUI图形用户界面编程,我们可以通过python提供的丰富的组件,快速的实现使用图形的界面和用户交互, GUI编程类似于“搭积⽊”,将⼀个个组件(Widget)放到窗⼝中,这篇文章主要给大家介绍了基于Python的GUI图形用户界面编程的相关资料,需要的朋友可以参考下
    2023-05-05
  • Django 使用VScode 创建工程的详细步骤

    Django 使用VScode 创建工程的详细步骤

    这篇文章主要介绍了Django 使用VScode 创建工程,创建Django 项目,可以和虚拟环境放在同一目录,也可以放在虚拟环境的文件夹里,本文通过图文并茂的形式给大家介绍的非常详细,需要的朋友可以参考下
    2022-09-09
  • 详解OpenCV自适应直方图均衡化的应用

    详解OpenCV自适应直方图均衡化的应用

    在本文中,将介绍如何应用对比度受限的自适应直方图均衡化 ( Contrast Limited Adaptive Histogram Equalization, CLAHE ) 来均衡图像,需要的可以参考一下
    2022-02-02
  • Python+selenium实现浏览器基本操作详解

    Python+selenium实现浏览器基本操作详解

    这篇文章主要为大家详细介绍了如何通过python脚本实现浏览器的一些基本操作,如:浏览器的前进后退、页面刷新等,感兴趣的可以学习一下
    2022-06-06
  • Python reversed反转序列并生成可迭代对象

    Python reversed反转序列并生成可迭代对象

    这篇文章主要介绍了Python reversed反转序列并生成可迭代对象,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-10-10
  • python3使用smtplib实现发送邮件功能

    python3使用smtplib实现发送邮件功能

    这篇文章主要为大家详细介绍了python3使用smtplib实现发送邮件功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-05-05

最新评论