Hola de nuevo. :)
Estoy esta semana muy liado intentando utilizar el mechanize que es un modulo de python webbrowser para mirar unos links de una web y he llegado a un punto que no logro descifrar que es:
Sí tengo un archivo de texto donde ahí guardo todos los datos de la página fuente osea el código fuente de la web y quiero que lea solo el texto que hay entre 2 palabras que están en el mismo texto y que coja el link que hay en ellas.
Gráficamente seria así:
----------------Fichero de texto-----------------------
Muchas línias de código fuente de la web
Hola me llamo x
http://link
Hasta luego
Me despidasdas
----------------Fichero de texto-----------------------
Cómo puedo cojer el link de http://link sí hay más de uno y estan fuera del rango Hola me llamo x , y Me despidasdas?
Saludos, :-\
Backglass
Quizás esto te sirve como referencia :P
import re
r = re.compile('http://\S+', re.IGNORECASE)
texto = "Muchas lineas de codigo fuente de la web Hola me llamo x http://link http://segundolink Hasta luego Me despidasdas"
punto1 = texto.find('Hola me llamo')
punto2 = texto.find('Hasta luego',punto1)
fragmento = texto[punto1:punto2]
links = r.findall(fragmento)
for l in links:
print(l)
Lo he probado en codepad porque es lo que tengo a mano ;D
:http://codepad.org/G6LMOId4
Saludos
Hola,
Perfeco gracias ;-) funciona perfecto pero ahora quiero filtrar la url osea que solo aparezca la url, en mi html aparecen 2 que estan en la misma línia ya que aparecen así:
http://var.com/scripts/runner.php?EA=2777">http://var.com/scripts/runner.php
y lo que necesito es que se quede una sola url como así:
Parte verde la que necesito y parte roja la que no necesito:
http://var.com/scripts/runner.php?EA=2777">http://var.com/scripts/runner.php
Estoy usando la expresión regular para conseguirlo
r = re.compile('\http.*var.com*\/*scripts\/*runner\/*.php*', re.IGNORECASE)
Ahora la pregunta como puedo filtrar la expresión regular para que coja todo hasta "> y "> no lo descarte y se quede el único link http://var.com/scripts/runner.php?EA=2777 ?
PD: No soy muy experto en esto de las expresiones regulares y puede que haya alguna barbaridad en la expresión regular xD
Saludos,
Backglass :D
Para eso simplemente busca el > con find y ya, luego tomas la parte de la cadena que te interesa
Saludos