有多种方法可以从 URL 获取 CSV 数据。从您的示例中,即雅虎财经,您可以复制Historical
数据链接并在 Pandas 中调用它
...
HISTORICAL_URL = "https://query1.finance.yahoo.com/v7/finance/download/GOOG?period1=1582781719&period2=1614404119&interval=1d&events=history&includeAdjustedClose=true"
df = pd.read_csv(HISTORICAL_URL)
一般模式可能涉及诸如requests
or httpx
发出 GET|POST 请求,然后将内容获取到io
.
import pandas as pd
import requests
import io
url = 'https://query1.finance.yahoo.com/v7/finance/download/GOOG'
params ={'period1':1538761929,
'period2':1541443929,
'interval':'1d',
'events':'history',
'crumb':'v4z6ZpmoP98',
}
r = requests.post(url,data=params)
if r.ok:
data = r.content.decode('utf8')
df = pd.read_csv(io.StringIO(data))
为了获取参数,我只是按照喜欢并复制“?”之后的所有内容。检查它们是否匹配;)
Results:
Update:
如果你可以直接在url中看到原始csv内容,只需将url传入pd.read_csv
直接来自 url 的示例数据:
data_url ='https://raw.githubusercontent.com/pandas-dev/pandas/master/pandas/tests/data/iris.csv'
df = pd.read_csv(data_url)