2010-04-06 3 views
0

나는 100 개의 프록시 목록을 가지고 있습니다. 내가 관심있는 URL은 abc.com입니다. 이 URL을 성공적으로 가져올 수있는 프록시의 수와 동일한 URL을 가져 오는 데 걸린 시간을 확인하고 싶습니다. 내가 이해하기를 바라고 있습니다. 저는 파이썬 놈입니다. 코드 스 니펫을 찾고 있습니다. 도움의 손길 정말 감사합니다 :)URL에 대해 프록시를 확인하는 방법은 무엇입니까?

Proxies : 

200.43.54.212 
200.43.54.212 
200.43.54.212 
200.43.54.212 

URL : 

abc.com 

Desired result : 

Proxy   isGood Time 

200.43.54.112 n  23.12 
200.43.54.222 n  12.34 
200.43.54.102 y  11.09 
200.43.54.111 y  8.85 

p.s을 : 위의 모든 프록시 중 80 8080

답변

4

당신은 urllib2을 사용하여 URL을 가져올 수 포트가 있습니다. 소요 시간을 확인하려면 시간 모듈을 사용할 수 있습니다. 여기에 당신이 원하는 것 무엇 않는 간단한 예제 :

import urllib2 
import time 


def testProxies(url, proxies): 
    # prepare the request 
    req = urllib2.Request(url) 
    # run the request for each proxy 
    results = ["Proxy   isGood Time"] 
    for proxy in (proxies): 
     # now set the proxy 
     req.set_proxy(proxy, "http") 
     # time it 
     start = time.time() 
     # try to open the URL 
     try: 
      urllib2.urlopen(req) 
      # format the results for success 
      results.append("%s y  %.2f" % (proxy, time.time()-start)) 
     except urllib2.URLError: 
      # format the results for failure 
      results.append("%s n  %.2f" % (proxy, time.time()-start)) 

    return results 

testResults = testProxies("http://www.abc.com", ["200.43.54.112", "200.43.54.222", 
        "200.43.54.102", "200.43.54.111"]) 
for result in testResults: 
    print result 

주요 포인트 urllib2.Request(url)에 요청을 생성하고 요청에 대한 프록시를 설정 할 수있는 set_proxy() 기능을 사용하고 있습니다.

+0

샘플 데이터에서 실제로 코드를 작성해 주셔서 감사합니다. 정말 고맙습니다. :) 포트 번호를 고려하는 방법. 모든 프록시에는 포트가 연결되어 있습니다. 다시 한 번 감사드립니다! – ThinkCode

+0

각 URL 끝에 콜론을 사용하여 포트 번호를 간단하게 추가 할 수 있습니다. 예를 들어, "200.43.54.112:80"포트 80에 대해. –

+0

그래, 언급 한 포트와 함께 노력했지만이 오류와 함께 붙어있다 : "NameError : 글로벌 이름 'URLError'가 정의되지 않았습니다." 확실하지 않은 무엇이 잘못 .. 귀하의 코드를 그대로 사용하십시오. – ThinkCode

관련 문제