Underc0de

Foros Generales => Dudas y pedidos generales => Mensaje iniciado por: OLM en Septiembre 07, 2014, 09:27:43 PM

Título: [Python] Necesito ayuda para crear web scraping
Publicado por: OLM en Septiembre 07, 2014, 09:27:43 PM
Hola a todos,
Necesito un empujoncito para crear un web scraping, lo tengo a medias pero no me funciona pues soy nuevo en Python y no se como obtener el html o texto plano de la URL.

Debo de obtener el html de una url, buscar una etiqueta y extraer el contenido de ella, para ello, tendra que modificar la url en cada vuelta del bucle por letras del diccionario de la siguiente manera desde AA, AB, AC, AD ..... ZA, ZB, ZC, hasta ZZ, las letras las cambiara y sacara el valor de la etiqueta de cada url
Pongo de color rojo lo que deberia de cambiar
http://www.localhost.es/ejemplo/35885.html?Code=AA&Find_Number=35&RegID2=0
Y lo que deberia de imprimir en pantalla
AA --- Etiqueta --- valor
AB --- Etiqueta --- valor
....................................
....................................
ZA --- Etiqueta --- valor
ZZ --- Etiqueta --- valor

Saludos.
Título: Re:[Python] Necesito ayuda para crear web scraping
Publicado por: Once en Septiembre 07, 2014, 09:52:06 PM
¿Puedes postear lo que tienes?



Puedes usar la libreria urllib o urllib2 para abrir una url y obtener el código.
Para sacar la etiqueta, puedes usar expresiones regulares (módulo re)
Para modificar la url, puedes usar el formateo de cadenas mira un ejemplo:
Código (python) [Seleccionar]
for x in "abcd":
    print "http://www.localhost.es/ejemplo/35885.html?Code={0}&Find_Number=35&RegID2=0".format(x)


No te puedo ayudar más porque la información que das no es suficiente. Si puedes ser un poco más específico te puedo ayudar mucho más.

Saludos!
Título: Re:[Python] Necesito ayuda para crear web scraping
Publicado por: OLM en Septiembre 08, 2014, 04:35:20 PM
Sería algo así


Código (python) [Seleccionar]
diccionario = (["A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z"])
url = ("http://www.localhost.es/3.html?Effort_Code=WW")
for i in diccionario:
   for j in diccionario:
      print ("http://www.localhost.es/3.html?Effort_Code=" + i + j )
      labelin = input ("Introduce la etiqueta html a buscar\n>>>")
      label = ("<"+labelin+">")
      longitud = len(label)
      linea = html.readline()
      if linea.find(label):
         print (i + j + " = " + "contenido de label")



Evidentemente en el primer print no tiene que imprimirlo, tengo que traerme el html o txt de la url para poder buscar en el.
Tengo print para ver si saca bien la url.

Saludos
Título: Re:[Python] Necesito ayuda para crear web scraping
Publicado por: Once en Septiembre 08, 2014, 10:39:32 PM
Ok bro, lo primero que veo es que usas Python 3x

Para sacar el html de una web, como te decía antes, debes usar la libreria urllib (urllib2 no existe en python 3x)

Código (python,2,8) [Seleccionar]

import urllib.request
import re

url = "http://python.org/"
response = urllib.request.urlopen(url)
html = str(response.read())

print(re.findall("<title>(.*?)</title>", html))


Las líneas que te resalté en el código, son en las que se saca la etiqueta (expresión regular). Ya solo te queda acomodar este código a lo que necesitas.
Saludos!
Título: Re:[Python] Necesito ayuda para crear web scraping
Publicado por: OLM en Septiembre 09, 2014, 08:17:48 AM
Muchas gracias por ayudarme, pero sigo sin poder sacar el contenido de las etiquetas de las URL's.
Me conecta pero me devuelve en todas las peticiones [].
Pongo el codigo según lo tengo.

Código (python) [Seleccionar]
import urllib.request
import re

diccionario = (["A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z"])
for i in diccionario:
for j in diccionario:
url = ("http://www.localhost.es/3.html?Effort_Code=" + i + j)
response = urllib.request.urlopen(url)
html = str (response.read)
print(re.findall('<span itemprop="price">(.*?)</span>', html))


¿Que puedo estar haciendo mal?
Yo queria primero extraer el html, guardarlo y despues linea a linea buscar la etiqueta, tiene mucho mas trabajo pero creo que lo entenderé mejor.

Saludos y mil gracias.

Un Saludo.
Título: Re:[Python] Necesito ayuda para crear web scraping
Publicado por: Once en Septiembre 09, 2014, 06:42:26 PM
Las expresiones regulares son muy sensibles, si no publicas el html no te puedo ayudar.

Saludos!