我的代码错误地使用Python从URL下载CSV文件

时间:2019-05-10 03:47:47

标签: python csv web-scraping beautifulsoup urllib

我创建了一些代码来从URL下载CSV文件。该代码下载链接的HTML代码,但是当我复制在浏览器中创建的url时,它可以工作,但在代码中却不起作用。

我尝试了os,response和urllib,但是所有这些选项都提供了相同的结果。

这是我最终要下载为CSV的链接: https://www.ishares.com/uk/individual/en/products/251567/ishares-asia-pacific-dividend-ucits-etf/1506575576011.ajax?fileType=csv&fileName=IAPD_holdings&dataType=fund

c2<-co2
c2[c2<330]<-NA
c3<-na.kalman(c2)
c4<-na.seadec(c2)
plot(co2)
lines(c3,col="blue")
lines(c4,col="red")

我想下载CSV数据。

1 个答案:

答案 0 :(得分:0)

它需要cookie才能正常工作

我使用requests.Session()自动获取和保留Cookie。

我写了文件response_csv.content,因为在第二次请求后我已经拥有了它-因此,我不必再次发出请求。而且因为使用urllib.request,所以我将创建不包含Cookie的请求,因此它可能无法正常工作。

import requests
from bs4 import BeautifulSoup

s = requests.Session()

url='https://www.ishares.com/uk/individual/en/products/251567/ishares-asia-pacific-dividend-ucits-etf?switchLocale=y&siteEntryPassthrough=true'

response = s.get(url, allow_redirects=True)

if response.status_code == 200:
    print("Success")
else:
    print("Failure")

#find the url for the CSV
soup = BeautifulSoup(response.content,'lxml')

for i in soup.find_all('a',{'class':"icon-xls-export"}):
    print(i.get('href'))

# I get two types of files, one CSV and the other xls. 
link_list=[]
for i in soup.find_all('a', {'class':"icon-xls-export"}):
    link_list.append(i.get('href'))

# I create the link with the CSV
url_csv = "https://www.ishares.com//"+link_list[0]

response_csv = s.get(url_csv)

if response_csv.status_code == 200:
    print("Success")
    f = open('dataset.csv', 'wb')
    f.write(response_csv.content)
    f.close()
else:
    print("Failure")