【问题标题】:Getting xlsx file from an .aspx webpage in python从python中的.aspx网页获取xlsx文件
【发布时间】:2018-02-03 07:23:38
【问题描述】:

我正在尝试从以下 URL 读取 .xlsx 文件,但即使可以从浏览器成功下载该文件,pd.read_excel 也会出错。

http://members.tsetmc.com/tsev2/excel/MarketWatchPlus.aspx?d=0

import numpy as np
import pandas as pd
data=pd.read_excel("http://members.tsetmc.com/tsev2/excel/MarketWatchPlus.aspx?d=0")

回溯是

>>> data=pd.read_excel("http://members.tsetmc.com/tsev2/excel/MarketWatchPlus.aspx?d=0")
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
[...]
xlrd.biffh.XLRDError: Unsupported format, or corrupt file: Expected BOF record; 
found b'\x1f\x8b\x08\x00}\xceuZ'

【问题讨论】:

  • 显示您的代码和/或错误消息?
  • 尝试使用 liburl2 并且不要发布指向包含自动宏的 xls(或任何类型的文档)的链接,我们无法知道您的意图
  • 我编辑我的问题

标签: python pandas


【解决方案1】:

显示的前四个字节 \x1f\x8b\x08\x00 清楚地表明我们正在接收一个 gzip 压缩文件,pandas 不会自动解压缩该文件。不过,我们可以自己做:

In [54]: import urllib.request, gzip

In [55]: df = pd.read_excel(gzip.GzipFile(fileobj=urllib.request.urlopen(url)))

In [56]: df.iloc[:5, :5]
Out[56]: 
  دیده بان بازار : 1396/11/14 - زمان آخرین معامله : 14:42:03  \
0                                               نماد           
1                                                فسا           
2                                              فرآور           
3                                              فملي2           
4                                              وبملت           

                Unnamed: 1 Unnamed: 2 Unnamed: 3    Unnamed: 4  
0                      نام      تعداد        حجم          ارزش  
1             پتروشيمي فسا        512    5251556    3647287532  
2  فرآوري‌موادمعدني‌ايران‌        310     694381   11249763313  
3   ملي‌ صنايع‌ مس‌ ايران‌          1   40949671  115887568930  
4                 بانك ملت        350    6350364    6561761997  

用于正确设置列的其余调整与帖子中的问题无关,因此我将不理会这些。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-09-08
    • 1970-01-01
    • 1970-01-01
    • 2020-03-25
    • 2010-11-29
    • 1970-01-01
    • 2011-09-20
    • 1970-01-01
    相关资源
    最近更新 更多