旋转代理IP在访问API以使用Python获取JSON请求之前

问题描述

问题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
 

我想用这段代码做什么

  1. 遍历我在stock_list中的7只股票列表
  2. 获取新的IP地址
  3. 使用股票代码,API密钥和新IP地址查询API
  4. 打印出股票的结果。

除了添加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个请求。

侧跑

如果这是一个超级nooby问题,请提前道歉。学习编码,并于上个月决定将Python作为第一语言。在团队树屋上学习Python课程时,尝试做一个附带项目,该项目使用预先建立的完善的估值公式来构建开源股票筛选器。超级早期大声笑,但进步就是进步https://github.com/Jakub-MFP/FIRE_Dashboard

我是未来训练哈哈的Pythonista

解决方法

  • 好像您要将代理放入params中一样,requests.get()是发布到服务器的数据;相反,您需要将其传递给 params = {'function': 'OVERVIEW','symbol': stock_ticker,'apikey': keys} response_data_overview = requests.get(base_url,params=params,proxies={'https': proxy}) ,以便它知道如何发出请求。

    ggfortify::autoplot.prcomp
  • 规避发布的API限制最好是粗鲁的,最坏的情况是重罪。您应该以较低的速率(即每分钟少于5个)提出请求,或者以更高的限制获得高级计划(或其他经过协商的,可能是付费的访问权限)。

    如果这是一个学习项目,那么以较低的速度提出请求可能是最好的方法。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...