如何在Python程序中下载CSV链接

问题描述 投票:0回答:2

网站是“https://www.nseindia.com/companies-listing/corporate-filings-announcements”。一位朋友向我发送了一些日期之间下载数据的底层链接作为 csv 文件,如下所示“https://www.nseindia.com/api/corporate-announcements?index=equities&from_date=14-01-2022&to_date=20-01-2022&csv=真” 此链接在网络浏览器中工作正常 首先,如果有人可以教育他如何获得此链接,或者更确切地说我如何获得此链接。 其次,我无法从 python 中的此链接将 csv 文件读取到数据框。可能是 %27 或其他问题。代码是

csv_url='https://www.nseindia.com/api/corporate-announcements?index=equities&from_date=14-01-2022&to_date=15-01-2022&csv=true%27'
df = pd.read_csv(csv_url)
print(df.head())
python pandas csv url
2个回答
1
投票

好吧,对于这个问题,首先您需要使用这篇文章中提到的标头请求 NSE 网站,然后一旦您访问主网站,您就会在会话中获得一些 cookie,使用它们您可以访问您想要的 url。要将 url 数据转换为 pandas 兼容字符串,我遵循了这个答案

确保标头中有自定义用户代理,否则将会失败。

import pandas as pd
import io
import requests

base_url = 'https://www.nseindia.com'
session = requests.Session()
headers = {
    'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, '
                         'like Gecko) '
                         'Chrome/80.0.3987.149 Safari/537.36',
    'accept-language': 'en,gu;q=0.9,hi;q=0.8',
    'accept-encoding': 'gzip, deflate, br'}

r = session.get(base_url, headers=headers, timeout=5)
cookies = dict(r.cookies)
response = session.get('https://www.nseindia.com/api/corporate-announcements?index=equities&from_date=14-01-2022&to_date=20-01-2022&csv=true', timeout=5, headers=headers, cookies=cookies)

content = response.content
df=pd.read_csv(io.StringIO(content.decode('utf-8')))
print(df.head())

0
投票

使用wget.py
DATA_URL = 'http://www.robots.ox.ac.uk/~ankush/data.tar.gz'

DATA_URL = '/home/xxx/book/data.tar.gz'

out_fname = 'abc.tar.gz'

wget.download(DATA_URL, out=out_fname)

© www.soinside.com 2019 - 2024. All rights reserved.