【问题标题】:Trying to load a page and cycle through proxies each time每次尝试加载页面并循环通过代理
【发布时间】:2019-07-20 22:00:03
【问题描述】:

我目前正在尝试通过做一些愚蠢的小项目来学习 Python,以尝试了解某些​​方面,但我遇到了一些障碍。我想做一些可以使用 .txt 文件中的代理列表访问页面的东西。我希望它用文件中的第一个代理加载网页,然后用第二个代理加载页面,依此类推。但是,我不断收到此错误: 回溯(最近一次通话最后): 文件“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 跑() 文件“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='ma​​in') 文件“C:\Users\Admin\AppData\Local\Programs\Python\Python37-32\lib\runpy.py”,第 263 行,在 run_path pkg_name=pkg_name, script_name=fname) _run_module_code 中的文件“C:\Users\Admin\AppData\Local\Programs\Python\Python37-32\lib\runpy.py”,第 96 行 mod_name、mod_spec、pkg_name、script_name) _run_code 中的文件“C:\Users\Admin\AppData\Local\Programs\Python\Python37-32\lib\runpy.py”,第 85 行 执行(代码,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 返回请求('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 不是 None else None AttributeError: 'str' 对象没有属性 'get'

代理文件如下所示:

我尝试过各种愚蠢的事情,比如将代理文件放在 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()

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

【问题讨论】:

    标签: python python-requests


    【解决方案1】:

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

    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()
    

    【讨论】:

      【解决方案2】:

      您需要将代理作为dict 提供给python requests,即:

      import requests
      url = input('Website:\n')
      with open('proxies.txt') as f:
          proxies = [x.strip() for x in list(f)]
      for p in proxies:
          r = requests.get(url, proxies={'http': p, 'https': p})
          print(r.text)
      

      Demo

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-03-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多