Python爬取水情日报

部署运行你感兴趣的模型镜像

需求: 爬取2001至今每日的流量数据

存在问题: 按日显示数据,手动复制或抄录存在问题

代码:

"""""""""""""""""""""""""""
任务:爬取水情日报
难点一:网页中使用了时间控件,每页仅显示一天的数据,只允许点击不允许输入;
解决办法:找到时间输入控件,使用selenium对网页源代码进行修改,删除readonly属性,这样就可以输入日期了。
难点二:爬取表格内容
解决办法:pandas读取表格内容十分方便
"""""""""""""""""""""""""""

from selenium import webdriver
from selenium.webdriver.common.by import By
import pandas as pd
import time

# 输入时间序列
Datetime = pd.read_excel('05-09.xlsx')['date']
# datetime格式转化为字符串
Datetime = Datetime.dt.strftime('%Y-%m-%d')
Datelist = list(Datetime)
# 准备空表
Empty_df = pd.DataFrame()

# 设置Selenium驱动器路径
driver = webdriver.Chrome('chromedriver.exe')
# 打开目标网页
url = 'xxx'
driver.get(url)

for i in Datelist:
    new_date_time = i
    
    # 定位日期控件元素、定位“查询”控件元素、定位数据所在表格:name为xxx的input
    date_picker = driver.find_element(By.XPATH,"//input[@name='ctl00$ContentLeft$menuDate1$TextBox11']")
    inquiry = driver.find_element(By.XPATH,"//input[@name='ctl00$ContentLeft$Button1']")
    datatable = driver.find_element(By.XPATH,"//table[@class='mainTxt']")
    
    # 执行JavaScript以删除元素的指定属性
    script = "arguments[0].removeAttribute('readonly');"
    driver.execute_script(script, date_picker)
    script = "arguments[0].removeAttribute('value');" # 该属性为时间设置了一个初始值,删掉
    driver.execute_script(script, date_picker)

    # 输入新的日期时间值
    date_picker.send_keys(new_date_time)
    
    # 点击查询
    inquiry.click()
    
    # 获取表格
    table = pd.read_html(datatable.get_attribute('outerHTML'))[0][2:]
    table['Date']=new_date_time
    table = table.drop(29)
    table = table.set_index('Date')
    Empty_df = Empty_df.append(table)
    
    # 刷新页面
    driver.refresh()
    time.sleep(1)


# 关闭驱动器
driver.quit()
Empty_df.to_excel('05-09_runoff.xlsx')

您可能感兴趣的与本文相关的镜像

Python3.10

Python3.10

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

1.项目代码均经过功能验证ok,确保稳定可靠运行。欢迎下载体验!下载完使用问题请私信沟通。 2.主要针对各个计算机相关专业,包括计算机科学、信息安全、数据科学与大数据技术、人工智能、通信、物联网等领域的在校学生、专业教师、企业员工。 3.项目具有丰富的拓展空间,不仅可作为入门进阶,也可直接作为毕设、课程设计、大作业、初期项目立项演示等用途。 4.当然也鼓励大家基于此进行二次开发。在使用过程中,如有问题或建议,请及时沟通。 5.期待你能在项目中找到乐趣和灵感,也欢迎你的分享和反馈! 【资源说明】 Python大作业爬取各省降水量及可视化源码+操作说明.zip 因为相关课程的缘故,需要在1个月内速成python,故选取了python最常用的爬虫作为实操训练 同时,还添加了可视化和GUI入门的内容使爬取的内容应用更丰富 在具体数据的选取上,我爬取的是各省份降水量实时数据 *话不多说,开始实操* ### 正文 1. 爬取数据 - 使用python爬虫爬取中国天气网各省份24时整点气象数据 - 由于降水量为动态数据,以js形式进行存储,故采用selenium方法经xpath爬取数据 ps:在进行数据爬取时,最初使用的方法是漂亮汤法(beautifulsoup)法,但当输出爬取的内容(<class = split>时,却空空如也。在源代码界面Ctrl+Shift+F搜索后也无法找到降水量,后查询得知此为动态数据,无法用该方法进行爬取 - 使用循环和分类的方式爬取省份不同、网址相似的降水量数据,顺带记录数据对应的城市 - f—string: ```python url_a= f'http://www.weather.com.cn/weather1dn/101{a}0101.shtml' ``` *f-string 用大括号 {} 表示被替换字段,其中直接填入替换内容* - 将城市和降水量相对应后存入字典再打印 - 代码:详见资源
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值