crawl clases para la ayuda

Bueno para celebrar mi cumpleaños y celebrarlo en grande les libero este código que esta muy padre es un modulo para crawling mediante proxys https y conexiones https cuando se tienen problemas para crawlear sitios esta lógica te puede ayudar a saltar algunos cerrojos saludos y felices y gratos crawls jajajaj aprovechando también celebro las mas de 500 visitas a este blog que no an sido demasiadas pero en tan poco tiempo que tiene son muchas yo creo  gracias dejen sus comentarios y desarrollen bajo python django y mongodb saludos !!!!!

el código no esta depurado funciona y hay que quitarle algunos imports pero si sabes no se te ara difícil

# coding=utf-8
from requests import Session
from xml.dom.minidom import parseString
from requests.adapters import HTTPAdapter
from requests.packages.urllib3.poolmanager import PoolManager
import lxml.html
from lxml import etree
import lxml.html as LH
import re
import hashlib
from datetime import datetime
import datetime
import time
import hashlib
import random
from BeautifulSoup import BeautifulSoup
#versión beta 0.10 by aaron meis almeis@hotmail.com
class SSLAdapter(HTTPAdapter):
def __init__(self, ssl_version=None, **kwargs):
self.ssl_version = ssl_version
super(SSLAdapter, self).__init__(**kwargs)

def init_poolmanager(self, connections, maxsize, block=False):
self.poolmanager = PoolManager(num_pools=connections,maxsize=maxsize,block=block,ssl_version=self.ssl_version)

def peticion(url):
print “iniciando peticion”
print str(url)
session = Session()
f = open(‘proxy.list’)
proxylist = [l.strip() for l in f.readlines()]
f.close()
session.mount(‘https://’, SSLAdapter(‘TLSv1’))
file = open(‘xxxxx.html’,’w’)
proxies = { “https”: “https://”+str(random.choice(proxylist)),}
print proxies
headers = { “User-Agent”: “Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.93 Safari/537.36”,}
try:
req = session.get(str(url), verify=False, proxies=proxies, headers=headers, timeout=22)
file.write(req.content)
file.close()
xdata = req.content
#print (req.content)
#print(proxies)
file.close()
# salvar(url,req.content)
except Exception:
print str(url) + “**peticion no satisfactoria**”
xdata = “False”
return xdata

def salvar(url,data):
indice = hashlib.sha224(url).hexdigest()
file = open(‘/key/’+str(indice)+’v2’+’.html’,’w’)
file.write(data)
file.close()
indicesave(str(indice))
print “salvado”+str(indice)

def indicesave(indice):
file = open(‘/key/indicev2.html’,’a’)
file.write(‘<a href=”‘+str(indice)+’v2’+.html'”>’+str(indice)+'</a>’)
file.close()

###################
#modulo numerico jejejej v 0.1
#def ciclo(url, numero):
# ban = 0
# jan = int(numero)
# while ban != 1000:
# print jan
# jan = jan – 1
# ban = ban + 1
#################

def crawllink(url, regex, pagina):
xdata = peticion(url)
# print xdata
if xdata != “False”:
soup = BeautifulSoup(xdata)
for link in soup.findAll(‘a’, href = re.compile(regex)):
extraer = link.get(‘href’)
xdata = peticion(str(pagina)+str(extraer))
if xdata != “False”:
salvar(extraer,xdata)
print extraer
time.sleep(3)
else:
print “intentando de nuevo un segundo porfavor …”
crawllink(url,regex,pagina)

pagina = “https://www.xxxxxxx&#8221;
url = “https://urlxxxx.xxx&#8221;
regex = r’.*\/exprecion regular.*’
crawllink(url,regex,pagina)
#ciclo(‘https://xxxxxxxx&#8217;,’numero_inicio’)
print “terminamos sin problemas listo para para mi nueva tarea … bye bye”

Anuncios
Tagged with:
Publicado en python

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: