Maison  >  Article  >  développement back-end  >  Exemple de robot d'exploration Python récupérant l'adresse IP du proxy et vérifiant la disponibilité

Exemple de robot d'exploration Python récupérant l'adresse IP du proxy et vérifiant la disponibilité

不言
不言original
2018-05-07 12:00:341752parcourir

Cet article présente principalement des exemples de robots Python récupérant des adresses IP proxy et vérifiant la disponibilité. Il a une certaine valeur de référence. Maintenant, je le partage avec vous. Les amis dans le besoin peuvent s'y référer

Écrivez fréquemment des robots. Il est inévitable que l'adresse IP soit bloquée par le site Web cible. Une seule adresse IP n'est certainement pas suffisante, si vous pouvez le faire sans dépenser d'argent, alors allez la trouver vous-même. Proxy de West Spur, mais ce site Web est également exploré ! ! !

Quant à la façon de gérer cela, je pense que vous pouvez essayer d'augmenter le délai. Peut-être que j'ai exploré trop fréquemment, donc mon IP a été bloquée.

Cependant, vous pouvez toujours essayer le bus IP. Tous les chemins mènent à Rome, et vous ne pouvez pas vous pendre à un arbre.

Pas de bêtises, juste du code.

#!/usr/bin/env python
# -*- coding:utf8 -*-
import urllib2
import time
from bs4 import BeautifulSoup
import sys
reload(sys)
sys.setdefaultencoding( "utf-8" )
req_header = {'User-Agent':'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.64 Safari/537.11',
 'Accept':'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
 #'Accept-Language': 'en-US,en;q=0.8,zh-Hans-CN;q=0.5,zh-Hans;q=0.3',
 'Accept-Charset':'ISO-8859-1,utf-8;q=0.7,*;q=0.3',
 'Accept-Encoding':'en-us',
 'Connection':'keep-alive',
 'Referer':'http://www.baidu.com/'
 }
req_timeout = 5
testUrl = "http://www.baidu.com/"
testStr = "wahaha"
file1 = open('proxy.txt' , 'w')
# url = ""
# req = urllib2.Request(url,None,req_header)
# jsondatas = urllib2.urlopen(req,None,req_timeout).read()
cookies = urllib2.HTTPCookieProcessor()
checked_num = 0
grasp_num = 0
for page in range(1, 160):
 req = urllib2.Request('http://www.xici.net.co/nn/' + str(page), None, req_header)
 html_doc = urllib2.urlopen(req, None, req_timeout).read()
 # html_doc = urllib2.urlopen('http://www.xici.net.co/nn/' + str(page)).read()
 soup = BeautifulSoup(html_doc)
 trs = soup.find('table', id='ip_list').find_all('tr')
 for tr in trs[1:]:
  tds = tr.find_all('td')
  ip = tds[1].text.strip()
  port = tds[2].text.strip()
  protocol = tds[5].text.strip()
  if protocol == 'HTTP' or protocol == 'HTTPS':
   #of.write('%s=%s:%s\n' % (protocol, ip, port))
   print '%s=%s:%s' % (protocol, ip, port)
   grasp_num +=1
   proxyHandler = urllib2.ProxyHandler({"http": r'http://%s:%s' % (ip, port)})
   opener = urllib2.build_opener(cookies, proxyHandler)
   opener.addheaders = [('User-Agent',
         'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.63 Safari/537.36')]
   t1 = time.time()
   try:
    req = opener.open(testUrl, timeout=req_timeout)
    result = req.read()
    timeused = time.time() - t1
    pos = result.find(testStr)
    if pos > 1:
     file1.write(protocol+"\t"+ip+"\t"+port+"\n")
     checked_num+=1
     print checked_num, grasp_num
    else:
     continue
   except Exception,e:
    continue
file1.close()
print checked_num,grasp_num

Personnellement, je ne pense pas que le code soit trop compliqué, donc je n'ai pas ajouté de commentaires Je pense que tout le monde peut le comprendre, si vous avez des questions, critiquez-nous et corrigez-nous afin que nous puissions progresser ensemble !

Recommandations associées :

Méthode Python pour collecter l'adresse IP du proxy et déterminer si elle est disponible et la mettre à jour régulièrement

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn