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

2024-05-23 20:09:01 发布

您现在位置: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
 

我想用这个代码做什么

  1. 反复浏览我的股票列表中的7只股票
  2. 获取一个新的IP地址
  3. 使用股票代码、API密钥和新IP地址查询API
  4. 打印出股票的结果

我已经完成了所有步骤,但是#3关于添加IP地址

这就是我构建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作为第一语言。在TeamTreehouse上学习Python课程时,他试图做一个附带项目,用预先构建好的估值公式构建一个开源股票筛选器。超早期阶段lol,但进步就是进步https://github.com/Jakub-MFP/FIRE_Dashboard

我是未来的练Python的哈哈


Tags: httpsipapifordatastockoverviewrandom
1条回答
网友
1楼 · 发布于 2024-05-23 20:09:01
  • 看起来您正在将代理放入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次)提出请求,或者获得具有更高限制的高级计划(或其他协商的,可能是付费访问)

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

相关问题 更多 >