Python: добавление значений в существующую электронную таблицу из обновленных значений - PullRequest
0 голосов
/ 17 сентября 2018

Что сейчас работает

В приведенном ниже коде первые 100 строк загружаются в Futures.xlsx с веб-сайта.

Сайт обновляется каждые 15 минут, обновляя новые значения, как акции компании. Всего строк 100.

Как я могу изменить свой код, например, каждый раз, когда веб-сайт обновляется или через какой-то счетчик, продолжать добавлять еще 100 обновленных значений в файл Futures.xlsx. Так что я бы сказал, что в течение часа будет 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()

1 Ответ

0 голосов
/ 17 сентября 2018

Я бы предложил использовать метод 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)
...