雅虎网站可以通过浏览器中的2081端口打开(在Firefox中为HTTP和HTTPS设置代理端口2081)。端口 2081 提供 HTTP(S) 代理。
2080端口提供SOCKS5代理服务:
url="https://query1.finance.yahoo.com/v7/finance/download/MSFT"
curl --socks5-hostname 127.0.0.1:2080 $url -o msft.txt
我现在可以下载雅虎数据,并希望通过此代理使用 yfinance 库。
尝试方法1:
import yfinance as yf
msft = yf.Ticker("MSFT")
msft.history(proxy="http://127.0.0.1:2081")
msft.history(proxy="https://127.0.0.1:2081")
msft.history(proxy="socks5://127.0.0.1:2080")
他们都不能工作!他们有相同的输出:
MSFT: No price data found, symbol may be delisted (period=1mo)
Empty DataFrame
Columns: [Open, High, Low, Close, Adj Close, Volume]
Index: []
尝试方法2:
cd ~
export all_proxy=socks5://127.0.0.1:2080
python3
输出:
Python 3.9.2 (default, Feb 28 2021, 17:03:44)
[GCC 10.2.1 20210110] on linux
Type "help", "copyright", "credits" or "license" for more information.
然后
import yfinance as yf
msft = yf.Ticker("MSFT")
msft.history()
输出:
Failed to get ticker 'MSFT' reason: SOCKSHTTPSConnectionPool(host='query2.finance.yahoo.com', port=443): Read timed out. (read timeout=10)
MSFT: No price data found, symbol may be delisted (period=1mo)
Empty DataFrame
Columns: [Open, High, Low, Close, Adj Close, Volume]
Index: []
export https_proxy=http://127.0.0.1:2081
同样的问题。
尝试方法3:
#pip install Pysocks first
import socket
import socks
socks.set_default_proxy(socks.SOCKS5, "127.0.0.1", 2080)
socket.socket = socks.socksocket
import yfinance as yf
msft = yf.Ticker("MSFT")
msft.history()
错误信息:
Failed to get ticker 'MSFT' reason:
HTTPSConnectionPool(host='query2.finance.yahoo.com', port=443):
Max retries exceeded with url: /v8/finance/chart/MSFT?
range=1d&interval=1d&crumb=tCwRGfMyTIV (Caused by
NewConnectionError('<urllib3.connection.HTTPSConnection object at
0x7f78d3f89730>: Failed to establish a new connection: [Errno -2]
Name or service not known'))
那我该如何解决呢?
已更新:
通过代理请求:
通过代理进行金融:
雅虎不再提供任何服务。
Bash 命令和 Python 的最新尝试:
我没有代理服务器,但是你可以尝试一下,看看是否可以访问该网站吗?
import requests
proxies = {
'http': 'http://127.0.0.1:2081',
'https': 'https://127.0.0.1:2081',
}
response = requests.get("https://query1.finance.yahoo.com/v7/finance/download/MSFT", proxies=proxies)
print(response.text)
另请尝试以下操作。确保您拥有最新版本的 yfinance,在命令行中使用
pip install yfinance --upgrade --no-cache-dir
,然后运行它。
import yfinance as yf
msft = yf.Ticker("MSFT")
msft.history(period="1mo", proxy="https://127.0.0.1:2081")
或者,您也可以尝试:
df = yf.download("MSFT", period="max", proxy="https://127.0.0.1:2081")
如果有错误,请告诉我。
也请尝试以下操作,看看您的代理是否可以访问。使用您的代理地址和端口。
import requests
proxies = {
"http": "http://USERNAME:[email protected]:7777",
"https": "http://USERNAME:[email protected]:7777"
}
response=requests.get("http://httpbin.org/ip", proxies=proxies)
print("Response Status Code", response.status_code)
print("Response data in Content format:\n", response.content)
还可以尝试在没有代理的情况下使用正常的 yfinance 方法,并向我展示输出。
尝试这个方法并让我知道会发生什么。
import requests
import yfinance as yf
proxies = {
'http': 'socks5://your_proxy_address:your_proxy_port',
'https': 'socks5://your_proxy_address:your_proxy_port'
}
session = requests.Session()
session.proxies = proxies
yf.pdr_override(session)
data = yf.download('MSFT', start='2023-01-01', end='2024-01-01')
print(data.head())