python - 在请求中使用局部变量
问题描述
我尝试在我的代码中导入代理。
我尝试在我的请求中选择一个随机代理,但我没有到达那里
这是我的代码(python)
import random
import requests
#create global variable to use in proxy_slct
rdmproxy = "1.1.1.1:1"
#get proxies from file + randomize and select
def proxy_slct():
global rdmproxy
threading.Timer(5.0, proxytimer).start()
proxy_file = open('proxies.txt').read().splitlines()
rdmproxy = random.choice(proxy_file)
f.close()
proxytimer()
#request
try:
login = requests.get("https://httpbin.org/ip", proxies=rdmproxy, timeout=5)
print(login.json())
解决方案
为什么要rmdproxy
在代码顶部定义然后覆盖它?
试试这个:
import random
import requests
def proxy_slct():
global rdmproxy
threading.Timer(5.0, proxytimer).start()
with open('proxies.txt') as file:
proxy_file = file.read().splitlines()
rdmproxy = random.choice(proxy_file)
proxytimer()
try:
login = requests.get("https://httpbin.org/ip", proxies=rdmproxy, timeout=5)
print(login.json())
如您所见,您没有rmdproxy
在全局范围内初始化,而是在使用关键字 global 的局部范围内初始化,您为该变量分配了一个随机值。
还尝试打印该变量,以便您可以查看它的值是否是您想要的值。
推荐阅读
- java - 如何捕获“无法反序列化对象”。Java(Android)中的异常?
- angular - 尝试使用 forRoot() 为延迟加载的组件延迟加载 Angular Material 相关的自定义模块不起作用
- android - 如何解决:com.android.builder.internal.aapt.v2.Aapt2Exception:Android 资源链接失败
- angular - 如何在将日期对象转换为角度即时类型时忽略时间戳
- jquery - 添加类被验证不触发引导程序 4 验证
- python - Python Pandas:将日期范围设为 -2 +5 年,例如:31 年 -> (29-36) 年
- apache-spark - Spark Streaming 未从 Kafka 主题中读取
- performance - 对于 RediSearch,创建单个索引还是创建多个索引更好?
- node.js - 使用 pm2 的 Typescript 节点应用程序部署过程
- java - 如何获取包含 JSONObject 的列表的大小?