Python从URL中读取不含“ csv”后缀的csv文件

时间:2018-08-23 08:25:33

标签: python python-3.x pandas csv

我正在尝试从不带“ csv”后缀的网址下载一个csv文件。 网址是: https://www.ishares.com/de/professionelle-anleger/de/produkte/270048/ishares-msci-world-value-factor-ucits-etf/1478358465952.ajax?fileType=csv&fileName=IS3S_holdings&dataType=fund&asOfDate=20180731

由于没有后缀“ csv”,所以我没有找到解决此问题的方法。我当前的代码如下:

link = "https://www.ishares.com/de/professionelle-anleger/de/produkte/270048/ishares-msci-world-value-factor-ucits-etf/1478358465952.ajax?fileType=csv&fileName=IS3S_holdings&dataType=fund&asOfDate=20180731"
data = pd.read_csv(link)  

我们非常感谢您的帮助。谢谢!

2 个答案:

答案 0 :(得分:0)

尝试查看文件。数据开始前有一个标题行。 Skiprows可以提供帮助。

data = pd.read_csv(link, skiprows=2) 

答案 1 :(得分:0)

我尝试的代码:

import urllib2

link = "https://www.ishares.com/de/professionelle-anleger/de/produkte/270048/ishares-msci-world-value-factor-ucits-etf/1478358465952.ajax?fileType=csv&fileName=IS3S_holdings&dataType=fund&asOfDate=20180731"
local_file_name = 'test.csv'
u = urllib2.urlopen(link)
f = open(local_file_name, 'wb')
meta = u.info()

file_size_dl = 0
block_sz = 8192
while True:
    buffer = u.read(block_sz)
    if not buffer:
        break
    file_size_dl += len(buffer)
    f.write(buffer)

f.close()

代码执行urlopen调用以下载URL。有趣的是,它产生的文件是html:

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" prefix="og: http://ogp.me/ns#" lang="de" xml:lang="de">
<head>
<title>iShares by BlackRock - Führender ETF Anbieter weltweit</title>
<link type="image/x-icon" href="//assets.blackrock.com/uk-retail-assets/ishares-

但是,使用Web浏览器打开相同的URL可以获取csv数据...该csv,您可以使用pandas和

读取它
 data = pd.read_csv(filename, skiprows=2, header=1)