Python:根据更新的值将值附加到现有电子表格

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python:根据更新的值将值附加到现有电子表格相关的知识,希望对你有一定的参考价值。

What is working now

在下面的代码中,前100行将从网站下载到Futures.xlsx。

该网站每15分钟更新一次,就像公司股票一样刷新新价值。总行数为100。

如何修改我的代码,例如每次网站更新或通过某个计数器继续向Futures.xlsx文件添加100个更新的值。所以我会说超过一个小时会有400行。

我已经包含了代码输出的前四行。

Output

   Contracts    Markets     Open    High    Low    Last     Pct     Time
0  Oct 2018 (E)    NG.F27.E    2.777   2.785   2.774   2.782   +0.36%  20:00
1  Nov 2018 (E)    NG.F27.E    2.793   2.800   2.792   2.800   +0.32%  19:51
2  Dec 2018 (E)    NG.F27.E    2.887   2.893   2.886   2.891   +0.21%  19:52
3  Jan 2019 (E)    NG.F27.E    2.977   2.984   2.975   2.980   +0.20%  19:52

Code

 urllib.request import urlopen
 from bs4 import BeautifulSoup
 import requests
 import pandas as pd
 from pandas import ExcelWriter
 from pandas import ExcelFile
 import os

 url = "https://quotes.ino.com/exchanges/contracts.html?r=NYMEX_NG"
 res = requests.get(url)
 soup = BeautifulSoup(res.text, 'lxml')

 Markets = []
 Contracts =[]
 Opens =[]
 Highs =[]
 Lows =[]
 Lasts=[]
 Changes=[]
 Pcts=[]

 data_rows = soup.findAll('tr')[3:]

 for td in data_rows[:100]:
 Market = td.findAll ('td')[0].text
 Markets.append(Market)
 Contract = td.findAll('td')[1].text
 Contracts.append(Contract)
 Open = td.findAll('td')[2].text
 Opens.append(Open)
 High = td.findAll('td')[3].text
 Highs.append(High)
 Low = td.findAll('td')[4].text
 Lows.append(Low)
 Last = td.findAll('td')[5].text
 Lasts.append(Last)
 Change = td.findAll('td')[6].text
 Changes.append(Change)
 Pct = td.findAll('td')[7].text
 Pcts.append(Pct)
 Time = td.findAll('td')[8].text

 df = pd.DataFrame({'Contracts' :Contracts,    Markets':Market,'Open':Opens, 
           'High':Highs, 'Low':Lows,'Last':Lasts,'Pct':Pcts})

out_path = "C:SidFutures.xls"
writer = pd.ExcelWriter(out_path , engine='xlsxwriter')
df.to_excel(writer,'Sheet2',index=False)
writer.save()
答案

我建议使用time.sleep方法每15分钟设置一个计时器。你可以设置一个小函数来为你刷新程序,我在下面做了。

def RefreshProgram(Program, timespan):
    while Program.isRunning:
        program.refresh()
        sleep(900)

下面是如何保存您的Excel数据。 datalist将是从您的网页中获取的一行数据。

logbook=pxl.load_workbook(file_location_goes_here, data_only=False)

emptylist=['','','','','','']

ash=logbook["name_of_sheet_goes_here"]

datalist=[data_from_webpage]

#defining row, column, and checking cell data

    rowx = 1
    colx = 1
    cellcontent = ash.cell(row=rowx, column=colx).value

    #finding first empty row           
    while cellcontent != None:
        rowx += 1
        cellcontent= ash.cell(row=rowx, column=colx).value

    for data in datalist:
        ash.cell(row=rowx, column=colx).value = data
        colval += 1

    logbook.save(filelocation)

以上是关于Python:根据更新的值将值附加到现有电子表格的主要内容,如果未能解决你的问题,请参考以下文章

我想要一个 pandas 脚本根据第一个电子表格中的值将一个 excel 表中的值排列到另一个表中

熊猫,我怎样才能避免使用 iterrow (如何根据来自另一个数据帧的值将值分配给数据帧中的新列)

如何使用查找的值将记录插入 SQL?

Google Apps脚本 - 复制到现有电子表格

需要将值添加到现有的行和列中

如何查询行中是不是存在值将值添加到另一个字段?