首页 > 解决方案 > Python:将值从更新的值附加到现有电子表格

问题描述

现在什么工作

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

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

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

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

输出

   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

代码

 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:\Sid\Futures.xls"
writer = pd.ExcelWriter(out_path , engine='xlsxwriter')
df.to_excel(writer,'Sheet2',index=False)
writer.save()

标签: pythonexcelappendrows

解决方案


我建议使用 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)

推荐阅读