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

如何解决旋转代理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个)提出请求,或者以更高的限制获得高级计划(或其他经过协商的,可能是付费的访问权限)。

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?