Underc0de

Foros Generales => Dudas y pedidos generales => Mensaje iniciado por: juliianc95 en Noviembre 15, 2013, 06:14:36 PM

Título: Ayuda Expresiones regulares en python
Publicado por: juliianc95 en Noviembre 15, 2013, 06:14:36 PM

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
Código (python) [Seleccionar]
[<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]
Título: Re:Ayuda Expresiones regulares en python
Publicado por: NoValidAccount en Noviembre 15, 2013, 08:11:27 PM
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!
Título: Re:Ayuda Expresiones regulares en python
Publicado por: Once en Noviembre 18, 2013, 10:34:30 PM
Tampoco es una expresión regular tan compleja como para usar una libreria externa. Así lo haría yo (con compile y findall):

Código (python) [Seleccionar]
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!
Título: Re:Ayuda Expresiones regulares en python
Publicado por: juliianc95 en Noviembre 27, 2013, 03:07:04 PM
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.
Título: Re:Ayuda Expresiones regulares en python
Publicado por: Once en Noviembre 27, 2013, 03:10:55 PM
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!
Título: Re:Ayuda Expresiones regulares en python
Publicado por: juliianc95 en Noviembre 27, 2013, 03:54:47 PM
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.
Título: Re:Ayuda Expresiones regulares en python
Publicado por: Once en Noviembre 27, 2013, 07:15:41 PM
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!
Título: Re:Ayuda Expresiones regulares en python
Publicado por: juliianc95 en Noviembre 27, 2013, 08:06:55 PM
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.
Título: Re:Ayuda Expresiones regulares en python
Publicado por: Once en Noviembre 30, 2013, 11:14:04 PM
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.

Código (python) [Seleccionar]
# -*- 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!
Título: Re:Ayuda Expresiones regulares en python
Publicado por: juliianc95 en Diciembre 01, 2013, 12:21:57 AM
Gracias hermano. Problema resuelto