Juego ejercicios [Python]

Iniciado por Masita, 21 Diciembre 2009, 03:04 AM

0 Miembros y 1 Visitante están viendo este tema.

Novlucker

#140
Te quedaste sin ideas XD

"Crear un Web crawler que reciba una URL y un número de 'niveles', y que liste todos los links de esa web, para el número de 'niveles' dado, así como el nivel al que pertenece el link"

Deben de entregarse links NO repetidos y pertenecientes al mismo dominio, ya que al listar links podemos terminar en otra web

Con niveles me refiero a que si voy a www.elhacker.net, como links de nivel 1 tengo por ejemplo; Faq's y Noticias (los links, no el nombre).

Ahora si ingreso a Faq's, tengo los siguientes links, Faq ADSL, Faq News, etc etc, estos son de 'nivel 2', porque llegue a ellos desde los de nivel 1, y así para demás niveles :P

Tener en cuenta además que de no revisar el code podemos terminar en un bucle infinito, por eso lo de links repetidos, porque si tengo un indice e ingreso a uno de sus links, pero en ese link tengo otra para volver al índice, ingresaría a link, luego a índice, y otra vez al link, y otra al índice, etc etc.

Otra cosa, se supone que desde un nivel solo puedes llegar a otro más alto, del 1 al 2, del 2 al 3, nunca del 2 al 1 por ejemplo, ya que se supone que comenzamos suponiendo links de nivel 1, así que cuando estemos en un nivel 2 y listemos sus links, de haber uno de nivel 1, ya lo habremos revisado, y por ende estará repetido :P

Espero no haber confundido mucho XD

Sino cualquier cosa el artículo de la wikipedia debería de aclararlo un poco, y siguiendo con ese mismo, yo ya tengo una 'araña' de tipo ..
Analizar los enlaces de un sitio para buscar links rotos.
Solo que la que tengo recibe una determinada web, busca links de 'descarga' (megaupload, rapidshare, filefactory, etc etc), los lista, y finalmente los revisa en sus resepectivos servidores a ver si siguen disponibles o fueron dados de baja por la razón que fuere ;D

Saludos
Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD

"Hay dos cosas infinitas: el Universo y la estupidez  humana. Y de la primera no estoy muy seguro."
Albert Einstein

Novlucker

Más preguntas XD

Ya se aburrieron de Python?
Nadie ha intentado?
Nadie ha podido?
Nadie ha entendido el enunciado?
Damos el tema por muerto?

Creanme que es fácil, Python hasta trae clases que facilitan la tarea a la hora de parsear contenido web :-\

Saludos
Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD

"Hay dos cosas infinitas: el Universo y la estupidez  humana. Y de la primera no estoy muy seguro."
Albert Einstein

Masita

Hice una primera version, pero me daba resultados que no queria asi que habra que refinarla pero ultimamente voy de culo con el tiempo. Mañana si puedo posteo algo.  ;D
En el cielo estan suspendidas las palabras que cantamos en nuestros sueños....

Amerikano|Cls

@Masita: Muy beuno que esten con este tipo de post, por cierto me gustaria robarte la idea y crear otro hilo pero con programacion Java, me permites?  :xD

Salu2




Mi blog:
http://amerikanocls.blogspot.com

Masita

Claro que te lo permito, no soy  la SGAE asi que no te cobrare derechos de autor  :xD

Saludos!
En el cielo estan suspendidas las palabras que cantamos en nuestros sueños....

Amerikano|Cls

jeje ta bien solo lo preguntaba para no generar malos pensamientos  ;)




Mi blog:
http://amerikanocls.blogspot.com

CaronteGold

Cita de: Novlucker en 25 Enero 2010, 18:19 PM
Más preguntas XD

Ya se aburrieron de Python?
Nadie ha intentado?
Nadie ha podido?
Nadie ha entendido el enunciado?
Damos el tema por muerto?

Creanme que es fácil, Python hasta trae clases que facilitan la tarea a la hora de parsear contenido web :-\

Saludos

  Pues es algo complejo xD, yo lo he intentado el fin de semana, y ahora esta semana entre que tengo un examen de química que si suspendo voy a Septiembre y que ando algo liado metiendo Ubuntu...
 
  Espero que no se borre el post  :P :P, ha tenido mucho éxito.

   Saludos.

O-LLOS-O

Bueno me  he estado revisando el post, y yo hace algun tiempo ya resolvi esto por mi parte, te lo deja todo en un fichero en forma de arbol:


Código (python) [Seleccionar]
# -*- coding: utf-8 -*-
from httplib import  BadStatusLine, IncompleteRead
import re, urllib2

listagen = []
lista = []
lista2 = []
links_Erroneos = []

def web(Ruta, ff, x, y):
    listagen.append(Ruta)
    try: HTLM = urllib2.urlopen(Ruta)
    except urllib2.URLError: links_Erroneos.append(Ruta)
    except urllib2.HTTPError: links_Erroneos.append(Ruta)
    except BadStatusLine: links_Erroneos.append(Ruta)
    except IncompleteRead: links_Erroneos.append(Ruta)
    else:
        htlm = ""
        for ele in HTLM: htlm += ele
        f = re.findall("<a href=\"(http://www[a-zA-Z0-9_ \.:]+[\.com|\.es|\.cat|\.edu|\.tv|\.de])\"",htlm)
        cad2 = "   :"
        cad5 = "\n"
        if x == 0: ff.write(Ruta+": \n")
        else: ff.write(cad2*x+cad5+cad2*x+"··"+Ruta+": \n")
        x += 1
        if (x <= y):
            for ele in f:
                if not ele in listagen:
                    lista.append(Ruta)
                    lista2.append(Ruta)
                    web(ele, ff, x,y)
                else:
                    lista2.append(Ruta)

y = raw_input("Ingrese una cantidad de niveles, cuidado!! no se pase:")
try: y=int(y)
except ValueError: print "Esto no es un numero!!"
else:
ff = open("http2.txt", "w")
web("http://www.sport.es", ff, 0, y)
ff.close()


Saludos!!


noodie

#148
ola a todos
para evitar abrir otro post, os ago mi pregunta aki
ay alguna manera de conseguir que te de los numeros primos en un rango determinado (a,b), que lo meteria el usuario
eske estoy mirando todo tipo de soluciones, pero no encuentro ninguna que se adapte a mis conocimientos de programar en python, soy nuevo asike evtad un lenguaje muy complicado que no lo entendere XD
PD: lo que aora mismo se de esto es: el if, elif,...., funciones (def ....) while, y rangos
PD2: no se como borrar mensajes, puse el segundo mensaje por error, pido disculpas :huh:
ya e conseguido sacar algo, aora el problema que tengo eske me sale esto:
es primo
2 es primo
3 es primo
5 es primo

y quiero que me salga como si fuera un rango normal, es decir:
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
solo que me salgan solos los primos
otra cosa, cuando ago una prueba, por ejemplo 3 y 8, me dice que 4 es primo, y se pongo 1,8 solo me tiene en cuenta el 1

noodie

#149
ola a todos
tengo una pregunta
se puede acer un programa para que el usuario ponga dos numeros (a, b) y que te de todos los numeros primos contendos en ese rango??
eske no e estado mirando muchas soluciones a este tipo de problema pero no consigo hacerlo
PD: evitad usad un lenguaje avanzado, ya que soy nuevo, lo que se es: if, elif,...., while, funciones y rangos