迭代代理的python字典

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了迭代代理的python字典相关的知识,希望对你有一定的参考价值。

所以我正在使用请求模块,但我每次发出请求时都尝试更改代理(Ex,GET和POST)。我有一个我想要使用的所有代理的字典,但是我无法通过迭代字典获得实际工作的请求。我理解如何使用单个代理发送请求,但同样,我不确定如何在每次请求后更改每个代理。这不是我想写的当前程序,但同样是我想要完成的任务:

BASE_URL = "Some url"
USER_AGENT = "Some user agent"
POST_URL = "Some url"

proxies = {
    'https' : 'proxy1',
    'https' : 'proxy2',
    'https' : 'proxy...'
}


def req():

        session = requests.Session()
        session.headers = {'user-agent': USER_AGENT}
        session.headers.update({'Referer': BASE_URL})
        req = session.get(BASE_URL, proxies=curProxy)

        session.headers.update({'x-csrftoken': req.cookies['csrftoken']})
        login_data = {'DATA HERE'}
        login = session.post(POST_URL, data=login_data, allow_redirects=True, proxies=curProxy)
        session.headers.update({'x-csrftoken': login.cookies['csrftoken']})
        cookies = login.cookies



# For each proxy in proxies
for proxy in proxies:
    # Updating the proxy to use
    curProxy = proxy
    req()

感谢所有提前回复的人。非常感谢所有帮助/输入!

答案

您不需要代理字典。使用普通列表:

proxies = ['proxy1', 'proxy2', ...]

更改函数req以接受代理作为参数。全局变量是邪恶的:)

def req(curProxy):
    ...
    req = session.get(BASE_URL, proxies={'http': curProxy, 'https': curProxy})

然后迭代

for proxy in proxies:
    req(proxy)

以上是关于迭代代理的python字典的主要内容,如果未能解决你的问题,请参考以下文章

Python代码阅读(第19篇):合并多个字典

Python snippet(代码片段)

Python代码阅读(第26篇):将列表映射成字典

Pandas Dataframes 的 Python 字典 - 迭代和调用

迭代 Python 中的字典或列表

Python代码阅读(第40篇):通过两个列表生成字典