轮换代理 IP 在使用 Python 访问 API 以获取 json 请求之前
Rotating Proxy IPs Before accessing API to get json request using Python
问题 1
在发出 API 请求之前如何使用新的 IP 地址?
问题 2除了打印抓取 IP 的结果外,是否有其他好的方法来测试这个 IP 是否真的有效
我创建了一个新文件,每行都有 IP 列表,我使用
获取代理
proxies_lines = open('proxies').read().splitlines()
proxy=random.choice(proxies_lines)
我尝试了两种存储代理的方法
https://000.00.000.00:0000
https://000.00.000.00:0000
https://000.00.000.00:0000
Also saw some posts of people storing them this way. Not sure which way is best?
000.00.000.00:0000
000.00.000.00:0000
000.00.000.00:0000
我想用这段代码做什么
- 遍历我在 stock_list
中的 7 只股票列表
- 获取一个新的 IP 地址
- 用股票代码查询 API,API 密钥和新 IP 地址
- 打印出股票的结果。
我已完成所有步骤,但有关添加 IP 地址的第 3 步已完成。
这就是我构建 for 循环的方式
for item in stock_list:
stock_ticker=item
keys=random.choice(lines)
proxy=random.choice(proxies_lines)
time.sleep(1)
# To access the API
base_url = 'https://www.alphavantage.co/query?'
params = {'proxies' : proxy,
'function': 'OVERVIEW',
'symbol': stock_ticker,
'apikey': keys}
response_data_overview = requests.get(base_url, params=params)
data_overview_MarketCapitalization = response_data_overview.json()['MarketCapitalization']
# Print Results
print("The Market Cap for {} is = {}".format(stock_ticker,data_overview_MarketCapitalization))
print("Proxie Used {}".format(proxy))
这是正确的设置方式吗?当我 运行 代码时,它会在停止之前打印出 7 只股票中的 5 只的市值。如果 IP 轮换可行,那么它将打印出 7 / 7 个结果,因为我每分钟只能为一个 IP 地址/密钥执行 5 个请求。
旁白
如果这是一个超级菜鸟的问题,请提前致歉。上个月学习编码并决定使用 Python 作为第一语言。在 treehouse 团队 Python 类 尝试做一个附带项目,即使用预先建立的完善的估值公式构建开源股票筛选器。超级早期阶段哈哈但进步就是进步https://github.com/Jakub-MFP/FIRE_Dashboard
我是未来Python正在训练中哈哈
看起来您正在将代理放入 params
,这是发布到服务器的数据;相反,您需要将其传递给 requests.get()
以便它知道如何发出请求。
params = {'function': 'OVERVIEW',
'symbol': stock_ticker,
'apikey': keys}
response_data_overview = requests.get(base_url,
params=params,
proxies={'https': proxy})
规避已发布的 API 限制充其量是粗鲁的,最坏的情况是重罪。您应该以较慢的速度发出请求(即每分钟少于 5 个)或获得具有更高限制的高级计划(或其他协商的、可能付费的访问)。
如果这是一个学习项目,以较慢的速度发出请求可能是最好的方法。
问题 1 在发出 API 请求之前如何使用新的 IP 地址?
问题 2除了打印抓取 IP 的结果外,是否有其他好的方法来测试这个 IP 是否真的有效
我创建了一个新文件,每行都有 IP 列表,我使用
获取代理 proxies_lines = open('proxies').read().splitlines()
proxy=random.choice(proxies_lines)
我尝试了两种存储代理的方法
https://000.00.000.00:0000
https://000.00.000.00:0000
https://000.00.000.00:0000
Also saw some posts of people storing them this way. Not sure which way is best?
000.00.000.00:0000
000.00.000.00:0000
000.00.000.00:0000
我想用这段代码做什么
- 遍历我在 stock_list 中的 7 只股票列表
- 获取一个新的 IP 地址
- 用股票代码查询 API,API 密钥和新 IP 地址
- 打印出股票的结果。
我已完成所有步骤,但有关添加 IP 地址的第 3 步已完成。
这就是我构建 for 循环的方式
for item in stock_list:
stock_ticker=item
keys=random.choice(lines)
proxy=random.choice(proxies_lines)
time.sleep(1)
# To access the API
base_url = 'https://www.alphavantage.co/query?'
params = {'proxies' : proxy,
'function': 'OVERVIEW',
'symbol': stock_ticker,
'apikey': keys}
response_data_overview = requests.get(base_url, params=params)
data_overview_MarketCapitalization = response_data_overview.json()['MarketCapitalization']
# Print Results
print("The Market Cap for {} is = {}".format(stock_ticker,data_overview_MarketCapitalization))
print("Proxie Used {}".format(proxy))
这是正确的设置方式吗?当我 运行 代码时,它会在停止之前打印出 7 只股票中的 5 只的市值。如果 IP 轮换可行,那么它将打印出 7 / 7 个结果,因为我每分钟只能为一个 IP 地址/密钥执行 5 个请求。
旁白
如果这是一个超级菜鸟的问题,请提前致歉。上个月学习编码并决定使用 Python 作为第一语言。在 treehouse 团队 Python 类 尝试做一个附带项目,即使用预先建立的完善的估值公式构建开源股票筛选器。超级早期阶段哈哈但进步就是进步https://github.com/Jakub-MFP/FIRE_Dashboard
我是未来Python正在训练中哈哈
看起来您正在将代理放入
params
,这是发布到服务器的数据;相反,您需要将其传递给requests.get()
以便它知道如何发出请求。params = {'function': 'OVERVIEW', 'symbol': stock_ticker, 'apikey': keys} response_data_overview = requests.get(base_url, params=params, proxies={'https': proxy})
规避已发布的 API 限制充其量是粗鲁的,最坏的情况是重罪。您应该以较慢的速度发出请求(即每分钟少于 5 个)或获得具有更高限制的高级计划(或其他协商的、可能付费的访问)。
如果这是一个学习项目,以较慢的速度发出请求可能是最好的方法。