首页 > 解决方案 > 每次尝试加载页面并循环通过代理

问题描述

我目前正在尝试通过做一些愚蠢的小项目来学习 Python,以尝试了解某些​​部分,但我遇到了一些障碍。我想做一些可以使用 .txt 文件中的代理列表访问页面的东西。我希望它用文件中的第一个代理加载网页,然后用第二个代理加载页面,依此类推。但是,我不断收到此错误: Traceback(最近一次调用最后一次):文件“c:\Users\Admin.vscode\extensions\ms-python.python-2019.6.24221\pythonFiles\ptvsd_launcher.py”,第 43 行,在主要(ptvsdArgs)

文件“c:\Users\Admin.vscode\extensions\ms-python.python-2019.6.24221\pythonFiles\lib\python\ptvsd__main__.py”,第 434 行,在 main run() 文件“c:\Users\Admin .vscode\extensions\ms-python.python-2019.6.24221\pythonFiles\lib\python\ptvsd__main__.py",第 312 行,在 run_file runpy.run_path(target, run_name=' main') 文件“C:\Users\Admin\AppData\Local\Programs\Python\Python37-32\lib\runpy.py”,第 263 行,run_path pkg_name=pkg_name, script_name=fname) 文件“C:\Users\ Admin\AppData\Local\Programs\Python\Python37-32\lib\runpy.py”,第 96 行,在 _run_module_code mod_name、mod_spec、pkg_name、script_name)文件“C:\Users\Admin\AppData\Local\Programs\Python \Python37-32\lib\runpy.py”,第 85 行,在 _run_code exec(code, run_globals) 文件“c:\Users\Admin\Documents\PythonScripts\ebay-traffic.py”,第 10 行,在 r = requests .get(url, proxies = line) 文件“C:\Users\Admin\AppData\Local\Programs\Python\Python37-32\lib\site-packages\requests\api.py”,第 75 行,在获取返回请求中('get', url, params=params, **kwargs) 文件“C:\Users\Admin\AppData\Local\Programs\Python\Python37-32\lib\site-packages\requests\api.py",第 60 行,在请求返回 session.request(method=method, url=url, ** kwargs)文件“C:\Users\Admin\AppData\Local\Programs\Python\Python37-32\lib\site-packages\requests\sessions.py”,第 524 行,在请求 prep.url、代理、流、验证,证书文件“C:\Users\Admin\AppData\Local\Programs\Python\Python37-32\lib\site-packages\requests\sessions.py”,第 699 行,在 merge_environment_settings no_proxy = proxies.get('no_proxy' ) if proxies is not None else None AttributeError: 'str' object has no attribute 'get'\Users\Admin\AppData\Local\Programs\Python\Python37-32\lib\site-packages\requests\sessions.py”,第 524 行,在请求 prep.url、代理、流、验证、证书文件“C: \Users\Admin\AppData\Local\Programs\Python\Python37-32\lib\site-packages\requests\sessions.py",第 699 行,在 merge_environment_settings no_proxy = proxies.get('no_proxy') 如果代理不是 None否则无 AttributeError:“str”对象没有属性“get”\Users\Admin\AppData\Local\Programs\Python\Python37-32\lib\site-packages\requests\sessions.py”,第 524 行,在请求 prep.url、代理、流、验证、证书文件“C: \Users\Admin\AppData\Local\Programs\Python\Python37-32\lib\site-packages\requests\sessions.py",第 699 行,在 merge_environment_settings no_proxy = proxies.get('no_proxy') 如果代理不是 None否则无 AttributeError:“str”对象没有属性“get”) if proxies is not None else None AttributeError: 'str' object has no attribute 'get') if proxies is not None else None AttributeError: 'str' object has no attribute 'get'

代理文件如下所示:txt 文件

我尝试过各种愚蠢的事情,比如将代理文件放在 int() 中,但这显然不起作用(但我尝试了很多愚蠢的事情)。

import requests

proxyList = 'proxies.txt'
file = open(proxyList, "r")
url = input('Website: ')


for line in file:
    print(line, end="")
    r = requests.get(url, proxies = line)

print('Finished.')
input()

我希望它在连接到代理时加载页面时打印代理文件的每一行。

标签: pythonpython-requests

解决方案


您需要将代理作为字典传递

import requests

proxyList = 'proxies.txt'
file = open(proxyList, "r")
url = input('Website: ')

for line in file:
    print(line, end="")

    proxies = {'http': line.strip(), 'https': line.strip()}
    r = requests.get(url, proxies=proxies)

print('Finished.')
input()

推荐阅读