python-3.x - 有没有办法实时显示不断变化的数据框?
问题描述
我正在从https://www.bseindia.com/markets/PublicIssues/BSEBidDetails_ofs.aspx?flag=NR&Scripcode=541729抓取数据。数据每 10 秒更改一次。所以我为脚本运行做了一个计时器。在每次迭代开始时,它会重新初始化 pandas 数据帧并抓取网站并将数据添加到数据帧中。有没有办法可以在静态窗口中显示这些数据?
from urllib.request import Request, urlopen
from bs4 import BeautifulSoup as soup
import pandas as pd
import time
url = 'https://www.bseindia.com/markets/PublicIssues/BSEBidDetails_ofs.aspx?flag=NRScripcode=541729'
req = Request(url , headers={'User-Agent': 'Mozilla/5.0'})
bseobj=pd.DataFrame(columns=['Price Interval','qNumber of bids','qConfirmed','qYet to be confirmed','qTotal','Confirmed','Yet to be confirmed','Total'])
while True:
i=0
r=[]
lr=[]
webpage = urlopen(req).read()
page_soup = soup(webpage, "html.parser")
table=page_soup.find_all("table")
for row in table[1]:
for column in row.find_all("td",{"class":"body_text_table"},{"bgcolor":"#FFFFFF"}):
val=column.get_text()
val=val.replace(',','')
chk=val.replace('.','')
if chk.isdigit():
r.append(float(val))
elif val=="":
r.append(0)
else:
r.append(val)
lr.append(r)
r=[]
for i in range(2,len(lr)-2):
bseobj=bseobj.append({'Price Interval':lr[i][0],'qNumber of bids':lr[i][1],'qConfirmed':lr[i][2],'qYet to be confirmed':lr[i][3],'qTotal':lr[i][4],'Confirmed':lr[i][5],'Yet to be confirmed':lr[i][6],'Total':lr[i][7]},ignore_index=True)
print(bseobj)
bseobj=bseobj.iloc[0:0]
time.sleep(10)
解决方案
推荐阅读
- bluetooth-lowenergy - NRF BLE 芯片,带绑定 - NoInputNoOutput 模式下的 bt-agent 不能“忘记”设备
- python - 试图在正则表达式中找到所有匹配“我是”但不在单词末尾的匹配项
- python - 如果 flask_socket.io 调用自己的运行,我如何设置 Flask 的 app.run 方法的 sll_context?
- javascript - “工作角色”部分互动表格
- django - 使用 DJango 和 import_export 导出数据,列重复
- objective-c - Objective C在不同线程中嵌套@synchronized
- amazon-s3 - 出于 ETL 目的将数据从 RocksDb 导出到 S3
- mysql - mysql问题的Sqoop访问控制
- scala - 为 apply 方法返回多个元素
- python-3.x - 读取几个 xml 文件并将它们保存为列表列表