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.
¿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:
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!
Sería algo así
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
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)
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!
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.
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.
Las expresiones regulares son muy sensibles, si no publicas el html no te puedo ayudar.
Saludos!