[Python] Necesito ayuda para crear web scraping

Iniciado por OLM, Septiembre 07, 2014, 09:27:43 PM

Tema anterior - Siguiente tema

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

Septiembre 07, 2014, 09:27:43 PM Ultima modificación: Septiembre 07, 2014, 09:35:26 PM por Expermicid
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
No tienes permitido ver los links. Registrarse o Entrar a mi cuentaAA&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.
Nunca consideres el estudio como una obligación, sino como una oportunidad para adentrarse en el maravilloso mundo del saber.

¿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
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!







No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

Septiembre 08, 2014, 04:35:20 PM #2 Ultima modificación: Septiembre 08, 2014, 04:43:06 PM por OLM
Sería algo así


Código: python
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
Nunca consideres el estudio como una obligación, sino como una oportunidad para adentrarse en el maravilloso mundo del saber.

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

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!







No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

Septiembre 09, 2014, 08:17:48 AM #4 Ultima modificación: Septiembre 09, 2014, 08:19:35 AM por OLM
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
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.
Nunca consideres el estudio como una obligación, sino como una oportunidad para adentrarse en el maravilloso mundo del saber.

Las expresiones regulares son muy sensibles, si no publicas el html no te puedo ayudar.

Saludos!







No tienes permitido ver los links. Registrarse o Entrar a mi cuenta