Buenas amigos, tengo una duda sobre expresiones regulares en python esta es mi duda:
Tengo un string que quiero sacar todos los h2 de hay. que metodo tendria que usar findall, search o usar grupos? un ejemplo de como quiero que quede.
Citar
[<h2 class="tt_18 d_inline">
<a class="no_underline" title="" href="/peliculas/pelicula-1628/">
El Padrino
</a>
</h2>, <h2 class="tt_18 d_inline">
<a class="no_underline" title="" href="/peliculas/pelicula-211083/">
One Direction: This Is Us
</a>
</h2>, <h2 class="tt_18 d_inline">
<a class="no_underline" title="" href="/peliculas/pelicula-182745/">
Intocable
</a>
</h2>, <h2 class="tt_18 d_inline">
<a class="no_underline" title="" href="/peliculas/pelicula-132874/">
El caballero oscuro. La leyenda renace
</a>
</h2>, <h2 class="tt_18 d_inline">
<a class="no_underline" title="" href="/peliculas/pelicula-24944/">
Gladiator (El gladiador)
</a>
</h2>, <h2 class="tt_18 d_inline">
<a class="no_underline" title="" href="/peliculas/pelicula-115362/">
El caballero oscuro
</a>
</h2>, <h2 class="tt_18 d_inline">
<a class="no_underline" title="" href="/peliculas/pelicula-27070/">
El Señor de los Anillos: La Comunidad del Anillo
</a>
</h2>, <h2 class="tt_18 d_inline">
<a class="no_underline" title="" href="/peliculas/pelicula-10568/">
Forrest Gump
</a>
</h2>, <h2 class="tt_18 d_inline">
<a class="no_underline" title="" href="/peliculas/pelicula-9393/">
La lista de Schindler
</a>
</h2>, <h2 class="tt_18 d_inline">
<a class="no_underline" title="" href="/peliculas/pelicula-126123/">
Toy Story 3
</a>
</h2>, <h2 class="tt_18 d_inline">
<a class="no_underline" title="" href="/peliculas/pelicula-10126/">
Pulp Fiction
</a>
</h2>, <h2 class="tt_18 d_inline">
<a class="no_underline" title="" href="/peliculas/pelicula-22092/">
El sexto sentido
</a>
</h2>, <h2 class="tt_18 d_inline">
<a class="no_underline" title="" href="/peliculas/pelicula-6641/">
El silencio de los corderos
</a>
</h2>, <h2 class="tt_18 d_inline">
<a class="no_underline" title="" href="/peliculas/pelicula-39186/">
El Señor de los Anillos: Las dos torres
</a>
</h2>, <h2 class="tt_18 d_inline">
<a class="no_underline" title="" href="/peliculas/pelicula-190918/">
Django desencadenado
</a>
</h2>, <h2 class="tt_18 d_inline">
<a class="no_underline" title="" href="/peliculas/pelicula-130440/">
Marvel Los Vengadores
</a>
</h2>, <h2 class="tt_18 d_inline">
<a class="no_underline" title="" href="/peliculas/pelicula-13892/">
Seven
</a>
</h2>, <h2 class="tt_18 d_inline">
<a class="no_underline" title="" href="/peliculas/pelicula-11736/">
Cadena perpetua
</a>
</h2>, <h2 class="tt_18 d_inline">
<a class="no_underline" title="" href="/peliculas/pelicula-39187/">
El Señor de los Anillos: El retorno del Rey
</a>
</h2>, <h2 class="tt_18 d_inline">
<a class="no_underline" title="" href="/peliculas/pelicula-25801/">
Star wars: Episodio IV - Una nueva esperanza (La guerra de las galaxias)
</a>
</h2>]
[/quote]
[size=12pt]Muchas Gracias! de antemano.[/size]
[/size][/font]
Mijo no reinventes la rueda, no te tortures, si andas haciendo scraping usa el modulo BeautifulSoup (http://www.crummy.com/software/BeautifulSoup/) para esa tarea en especifico que quieres.
Seria tan simple como esto:
from bs4 import BeautifulSoup
soup = BeautifulSoup(html_doc)
headers = soup.find_all('h2')
Obviamente html_doc puede ser esa cadena que tienes arriba o un archivo.
Y eso es todo estimado amigo.
Para instalar BeautifulSoup en Debian/Ubuntu con apt:
pt-get install python-bs4
con easy_install:
easy_install beautifulsoup4
Con pip
pip install beautifulsoup4
Suerte con eso!
Tampoco es una expresión regular tan compleja como para usar una libreria externa. Así lo haría yo (con compile y findall):
import re
import urllib
text = urllib.urlopen("http://www.sensacine.com/peliculas/en-cartelera/cines/").read()
expresion = re.compile("(<h2.+?</h2>)", re.DOTALL)
data = expresion.findall(text)
for u in data:
print u, "\r\n"
Saludos!
gracias, por la ayuda. pero ando usando mechanize se me olvido decir. y quiero extraer la informacion solo con expresiones regulares. sin ningun otro parametro ni nd. cual seria el code? gracias de antemano.
No tienes permitido ver enlaces.
Registrate o Entra a tu cuenta
gracias, por la ayuda. pero ando usando mechanize se me olvido decir. y quiero extraer la informacion solo con expresiones regulares. sin ningun otro parametro ni nd. cual seria el code? gracias de antemano.
¿qué información extraes con mechanize? si quieres pon el code y dime que quieres cambiar para poder ayudarte mejor
Saludos!
Gracias hermano. me sirvio me dio esto:
Citar
<h2 class="tt_18 d_inline">
<a class="no_underline" title="" href="/peliculas/pelicula-1628/">
El Padrino
</a>
</h2>
<h2 class="tt_18 d_inline">
<a class="no_underline" title="" href="/peliculas/pelicula-182745/">
Intocable
</a>
</h2>
<h2 class="tt_18 d_inline">
<a class="no_underline" title="" href="/peliculas/pelicula-211083/">
One Direction: This Is Us
</a>
</h2>
<h2 class="tt_18 d_inline">
<a class="no_underline" title="" href="/peliculas/pelicula-24944/">
Gladiator (El gladiador)
</a>
</h2>
<h2 class="tt_18 d_inline">
<a class="no_underline" title="" href="/peliculas/pelicula-132874/">
El caballero oscuro. La leyenda renace
</a>
</h2>
<h2 class="tt_18 d_inline">
<a class="no_underline" title="" href="/peliculas/pelicula-115362/">
El caballero oscuro
</a>
</h2>
<h2 class="tt_18 d_inline">
<a class="no_underline" title="" href="/peliculas/pelicula-27070/">
El Señor de los Anillos: La Comunidad del Anillo
</a>
</h2>
<h2 class="tt_18 d_inline">
<a class="no_underline" title="" href="/peliculas/pelicula-9393/">
La lista de Schindler
</a>
</h2>
<h2 class="tt_18 d_inline">
<a class="no_underline" title="" href="/peliculas/pelicula-10568/">
Forrest Gump
</a>
</h2>
<h2 class="tt_18 d_inline">
<a class="no_underline" title="" href="/peliculas/pelicula-126123/">
Toy Story 3
</a>
</h2>
<h2 class="tt_18 d_inline">
<a class="no_underline" title="" href="/peliculas/pelicula-10126/">
Pulp Fiction
</a>
</h2>
<h2 class="tt_18 d_inline">
<a class="no_underline" title="" href="/peliculas/pelicula-22092/">
El sexto sentido
</a>
</h2>
<h2 class="tt_18 d_inline">
<a class="no_underline" title="" href="/peliculas/pelicula-196666/">
Los juegos del hambre: En llamas
</a>
</h2>
<h2 class="tt_18 d_inline">
<a class="no_underline" title="" href="/peliculas/pelicula-6641/">
El silencio de los corderos
</a>
</h2>
<h2 class="tt_18 d_inline">
<a class="no_underline" title="" href="/peliculas/pelicula-39186/">
El Señor de los Anillos: Las dos torres
</a>
</h2>
<h2 class="tt_18 d_inline">
<a class="no_underline" title="" href="/peliculas/pelicula-190918/">
Django desencadenado
</a>
</h2>
<h2 class="tt_18 d_inline">
<a class="no_underline" title="" href="/peliculas/pelicula-130440/">
Marvel Los Vengadores
</a>
</h2>
<h2 class="tt_18 d_inline">
<a class="no_underline" title="" href="/peliculas/pelicula-13892/">
Seven
</a>
</h2>
<h2 class="tt_18 d_inline">
<a class="no_underline" title="" href="/peliculas/pelicula-11736/">
Cadena perpetua
</a>
</h2>
<h2 class="tt_18 d_inline">
<a class="no_underline" title="" href="/peliculas/pelicula-39187/">
El Señor de los Anillos: El retorno del Rey
</a>
</h2>
ahora amigo como hago para sacar todos los href agregandole algo alante. por ejemplo:
sasasa.com/peliculas/pelicula-39187/"
gracias de antemano.
En ese caso tendría que guardar la dirección del la web en una variable y con otra expresión regular sacas los href y luego concatenas la dirección de la web con el href
Saludos!
CitarEn ese caso tendría que guardar la dirección del la web en una variable y con otra expresión regular sacas los href y luego concatenas la dirección de la web con el href
ok hermano pero tienes un ejemplo para entender mejor? gracias de antemano.
No tienes permitido ver enlaces.
Registrate o Entra a tu cuenta
CitarEn ese caso tendría que guardar la dirección del la web en una variable y con otra expresión regular sacas los href y luego concatenas la dirección de la web con el href
ok hermano pero tienes un ejemplo para entender mejor? gracias de antemano.
# -*- coding: utf-8 -*-
import re
import urllib
text = urllib.urlopen("http://www.sensacine.com/peliculas/en-cartelera/cines/").read()
expresion = re.compile("(<h2.+?</h2>)", re.DOTALL)
data = expresion.findall(text)
for u in data:
print "sasasa.com" + re.findall('<a.*?href="(.*?)".*?>', u)[0]
Saludos!
Gracias hermano. Problema resuelto