【问题标题】:Python: How to access a list of urls through a list of proxies?Python:如何通过代理列表访问 url 列表?
【发布时间】:2013-08-16 20:07:42
【问题描述】:

现在我暂时有这个代码:

import json
import urllib2  

with open('proxies.txt') as proxies:
    for line in proxies:
        proxy = json.loads(line)
        proxy_handler = urllib2.ProxyHandler(proxy)
        opener = urllib2.build_opener(proxy_handler)
        urllib2.install_opener(opener)
with open('urls.txt') as urls:
    for line in urls:
        url = line.rstrip()
        data = urllib2.urlopen(url).read()
        print data

我的 proxies.txt 文件如下:

{"https": "https://94.142.27.4:3128"}
{"http": "http://118.97.95.174:8080"}
{"http": "http://66.62.236.15:8080"}

而我的urls.txt文件如下:

http://www.google.com
http://www.facebook.com
http://www.reddit.com

似乎它正在安装所有代理,然后在安装了所有代理的情况下处理列表中的每个 url。不过,我真正想要的是让它通过每个代理单独访问每个 url。所以

  1. 通过代理1访问url1
  2. 通过代理1访问url2
  3. 通过代理1访问url3
  4. 通过代理2​​访问url1
  5. 通过代理2​​访问url2
  6. 通过代理2​​访问url3
  7. 通过代理3访问url1
  8. 通过代理3访问url2
  9. 通过代理3访问url3

有没有办法做到这一点?它已经在这样做了吗?我是否误解了代理的真正含义?我是否误解了 install_opener 的真正作用?

【问题讨论】:

    标签: python urllib2 urllib


    【解决方案1】:

    我不确定这是否正是您想要的,但是...

    由于您想通过所有代理尝试所有 URL,您可以使用 itertools.product 轻松构建所有组合:

    import itertools
    
    with open('proxies.txt') as proxies:
        with open('urls.txt') as urls:
            for (proxie, url) in itertools.product(proxies, urls):
                print "access", url.rstrip(), "using", proxie.rstrip()
    

    当然,您必须插入实际代码,而不是 print


    也就是说,您原始代码的唯一真正问题可能是缩进。你想要 nested 循环。所以你应该怎么写:

    with open('proxies.txt') as proxies:
        for line in proxies:
            proxy = json.loads(line)
            proxy_handler = urllib2.ProxyHandler(proxy)
            opener = urllib2.build_opener(proxy_handler)
            urllib2.install_opener(opener)
    
            with open('urls.txt') as urls:
                for line in urls:
                    url = line.rstrip()
                    data = urllib2.urlopen(url).read()
                    print data
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-02
      • 1970-01-01
      • 1970-01-01
      • 2023-03-27
      • 2017-10-11
      相关资源
      最近更新 更多