热线电话:13121318867

登录
2019-02-25 阅读量: 611
用第一行html表更新excel文件

我想更新从html表导出到excel的数据。

问题是,我想保留旧数据。

我有3个温度传感器,每个都有一个网页,我在那里获取数据并将其导出到excel文件中。

每个传感器都有多个页面,因为有很多数据。

我设法将所有内容导出到.xlsx文件,但是当我再次启动脚本时,最旧的数据行会丢失,因为网页只显示(大约)30天的数据。

作用:

为每个传感器读取每页1到25页,将传感器的所有数据放入单独的excel文件中。

它应该做什么:

检查html表中的第一行是否与excel表中的第一行匹配,如果true则不执行任何操作,如果为false则在excel表中添加新行。

是的,我知道代码没有很好地优化,因为我没有长时间使用pyton。任何有关网址变量的帮助都非常感谢(网址不完全相同 - > page = n和deviceid = x)

这是代码:

import pandas as pd

print "Starting fenster 3.."

fenster_3_seite_25, = pd.read_html("URL", header=0)

... ##deleted other rows for overview

fenster_3_seite_1, = pd.read_html("URL", header=0)

print "Collecting data for fenster 3 done! Creating file fenster_3.xlsx"

fenster_komplett = pd.concat([fenster_3_seite_1, fenster_3_seite_2, fenster_3_seite_3, fenster_3_seite_4, fenster_3_seite_5, fenster_3_seite_6, fenster_3_seite_7, fenster_3_seite_8, fenster_3_seite_9, fenster_3_seite_10, fenster_3_seite_11, fenster_3_seite_12, fenster_3_seite_13, fenster_3_seite_14, fenster_3_seite_15, fenster_3_seite_16, fenster_3_seite_17, fenster_3_seite_18, fenster_3_seite_19, fenster_3_seite_20, fenster_3_seite_21, fenster_3_seite_22, fenster_3_seite_23, fenster_3_seite_24, fenster_3_seite_25], ignore_index=True)

fenster_komplett.to_excel("fenster_3.xlsx", index=False)

print "Fenster 3 done!"

print "Starting privat.."

privat_seite_25, = pd.read_html("URL", header=0)

... ##deleted other rows for overview

privat_seite_1, = pd.read_html("URL", header=0)

print "Collecting data for privat done! Creating file privat.xlsx"

privat_komplett = pd.concat([privat_seite_1, privat_seite_2, privat_seite_3, privat_seite_4, privat_seite_5, privat_seite_6, privat_seite_7, privat_seite_8, privat_seite_9, privat_seite_10, privat_seite_11, privat_seite_12, privat_seite_13, privat_seite_14, privat_seite_15, privat_seite_16, privat_seite_17, privat_seite_18, privat_seite_19, privat_seite_20, privat_seite_21, privat_seite_22, privat_seite_23, privat_seite_24, privat_seite_25], ignore_index=True)

privat_komplett.to_excel("privat.xlsx", index=False)

print "Privat done!"

print "Starting tuer 3.."

tuer_3_seite_25, = pd.read_html("URL", header=0)

... ##deleted other rows for overview

tuer_3_seite_1, = pd.read_html("URL", header=0)

print "Collecting data for tuer_3 done! Creating file tuer_3.xlsx"

tuer_komplett = pd.concat([tuer_3_seite_1, tuer_3_seite_2, tuer_3_seite_3, tuer_3_seite_4, tuer_3_seite_5, tuer_3_seite_6, tuer_3_seite_7, tuer_3_seite_8, tuer_3_seite_9, tuer_3_seite_10, tuer_3_seite_11, tuer_3_seite_12, tuer_3_seite_13, tuer_3_seite_14, tuer_3_seite_15, tuer_3_seite_16, tuer_3_seite_17, tuer_3_seite_18, tuer_3_seite_19, tuer_3_seite_20, tuer_3_seite_21, tuer_3_seite_22, tuer_3_seite_23, tuer_3_seite_24, tuer_3_seite_25], ignore_index=True)

tuer_komplett.to_excel("tuer_3.xlsx", index=False)

解决办法:如果数据中有日期字段,则只需先使用pd.read_excel()导入旧数据,然后将其添加到pd.concat()函数,然后对其执行drop_duplicates()。见下面的例子。

existing_excel = pd.read_excel(excel_path,sheet_name)

final_excel = pd.concat([existing_excel,new_pd1,new_pd2])

final_excel.drop_duplicates(inplace=True)

final_excel.to_excel(excel_path)

print "Tuer 3 done!"

0.0000
3
关注作者
收藏
评论(0)

发表评论

暂无数据
推荐帖子