Creado clase de Exploring Task. Creado modulo de scraping utils

This commit is contained in:
pablomartincalvo 2018-08-12 23:14:47 +02:00
parent b1b7de13f8
commit c0b398b9c6
13 changed files with 258 additions and 14 deletions

View file

@ -1,9 +1,12 @@
# -*- coding: utf-8 -*-
import sys
sys.path.append('..')
import uuid
import datetime
from time import sleep
from core.mysql_wrapper import get_anunciosdb
from core.scrapping_utils import UrlAttack
class Explorer():
@ -39,7 +42,7 @@ class Explorer():
if not self.queue_is_up():
break
self.compose_listing_url
current_task = ExploringTask(self.compose_listing_url)
@ -80,19 +83,52 @@ class Explorer():
def compose_listing_url(self):
#Decide que url hay que componer y la compone
raiz, orden = componer_raiz(p_orden, tipo_anuncios, ciudad)
cantidad = calcular_cantidad_listado(anuncios_por_capturar)
lista_urls = []
for num in range(primera_pagina, cantidad + primera_pagina):
lista_urls.append(raiz + 'pagina-' + str(num) + '.htm' + orde$
raiz = 'https://www.idealista.com/'
tipo = #Logica random
ciudad = 'barcelona'
numero = #logica random
url = raiz + tipo + '-garajes/' + ciudad + '-' + ciudad + '/' +
'pagina-' + numero + '.htm'
return url
return lista_urls
class ExploringTask():
#funcion que compone los strings de url de idealista
#tiene en cuenta cuantos anuncios quedan por capturar
#para decidir la cantidad de URLs a generar
def __init__(self, url):
self.creation_date = Datetime.Datetime.now()
self.target_url = url
self.id = str(uuid.uuid4())
self.status = 'Pending'
self.log()
def explore(self):
self.attack_date = Datetime.Datetime.now()
attack = UrlAttack(self.url)
attack.attack()
if attack.success:
self.get_listings()
if self.listings_ok:
self.status = 'Success'
else:
self.status = 'Failure'
self.log
def get_listings(self):
#TODO
#Funcion que devuelva los listings limpitos
def log(self):
#TODO
#Funcion que grabe estado y demas en una mongodb o argo azin
def extract_listings(self):
#TODO
#Coge el html de una pagina de listado y pilla las referencias.
#Si no cae ninguna, se considera un fail