[SOLUCIONADO] Con esta expresion regular (si asi se puede llamar)

Iniciado por juliianc95, Enero 05, 2014, 10:33:38 AM

Tema anterior - Siguiente tema

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

Enero 05, 2014, 10:33:38 AM Ultima modificación: Mayo 25, 2014, 03:46:57 PM por blackdrake
buenas amigos. bueno tengo mucho tiempo probando con esta expresion regular (si asi se puede llamar) dado que quiero que me extraiga todos los <iframe> que tiene la pagina o todos los videos por decirlo asi.

creo que la pagina esta encryptada. o algo parecido. "de ser asi me ayudarian a desencriptarla? o explicarme como".

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

Código: python

#!/usr/bin/env python
# Este archivo usa el encoding: utf-8
import re
import mechanize
import cookielib
import anticlon
import MySQLdb
import sys
from unicodedata import normalize
br=mechanize.Browser()
#Se crea la instancia del cookie:
j = cookielib.LWPCookieJar()
#Se define que no se maneja robots:
br.set_handle_robots(False)
#Se define el tiempo de refrescamiento:
br.set_handle_refresh(mechanize._http.HTTPRefreshProcessor(), max_time=1)
#Se define las cabeceras del navegador, en este caso se le está diciendo que el navegador es un firefox desde Linux Debian:
br.addheaders = [('User-agent', 'Mozilla/5.0 (X11; U; Linux i686; es-VE; rv:1.9.0.1)Gecko/2008071615 Debian/6.0 Firefox/9')]

def remover_acentos(txt, codif='utf-8'):
    ''' Devolve cópia de uma str substituindo os caracteres
        acentuados pelos seus equivalentes não acentuados.
   
    ATENÇÃO: carateres gráficos não ASCII e não alfa-numéricos,
    tais como bullets, travessões, aspas assimétricas, etc.
    são simplesmente removidos!
     
    >>> remover_acentos('[ACENTUAÇÃO] ç: áàãâä! éèêë? íìĩîï, óòõôö; úùũûü.')
    '[ACENTUACAO] c: aaaaa! eeee? iiiii, ooooo; uuuuu.'
    '''
    return normalize('NFKD', txt.decode(codif)).encode('ASCII','ignore').replace('\n','')


url="http://www.animeid.tv/peliculas?pag=1"
r=br.open(url)
htmlstring=br.response().read()
#print htmlstring

num=0
lol=0
for num in range(0,2):
    url="http://www.animeid.tv/peliculas?pag="+str(num)
    r=br.open(url)
    htmlstring=br.response().read()
    #print br.title()
    #print br.geturl()
    #print htmlstring 
    #//////////////////////////////////////////////////////////////////////////////////
    # Obtiene los enlaces de todos los listados y los guarda en links
    #//////////////////////////////////////////////////////////////////////////////////
    regex='<article class="item"> <a href="(.+?)"><header>'
    pattern = re.compile(regex, re.I | re.DOTALL | re.MULTILINE)
    lista_temp = pattern.findall(htmlstring)
    url="http://www.animeid.tv"
    for u in lista_temp:
        web=url+u
        #print web
        r=br.open(web)
        htmlstring=br.response().read()
        #print htmlstring
        try:
            regex='<hgroup> <h1>(.+?)</h1>'
            pattern = re.compile(regex, re.I | re.DOTALL | re.MULTILINE)
            titulo = remover_acentos(pattern.search(htmlstring).group(1))
        except:
            titulo = "-"
        #print titulo
        try:
            regex='<p class="sinopsis">(.+?)</p>'
            pattern = re.compile(regex, re.I | re.DOTALL | re.MULTILINE)
            sinopsis = remover_acentos(pattern.search(htmlstring).group(1))
        except:
            sinopsis = "-"
        #print sinopsis
        try:
            regex='<ul class="tags">(.+?)</li></ul>'
            pattern = re.compile(regex, re.I | re.DOTALL | re.MULTILINE)
            temp_var = pattern.search(htmlstring).group(1)
            regex='<li><a.+?>(.+?)</a></li>'
            pattern = re.compile(regex, re.I | re.DOTALL | re.MULTILINE)
            genero = pattern.findall(temp_var)
            genero = remover_acentos(", ".join(genero))
        except:
            genero = "-"
        #print genero
        try:
            regex='<span class="c">(.+?)</span>'
            pattern = re.compile(regex, re.I | re.DOTALL | re.MULTILINE)
            tipodepelicula = remover_acentos(pattern.search(htmlstring).group(1))
        except:
            tipodepelicula = "-"
        #print tipodepelicula
        try:
            regex='<span class="c e1">(.+?)</span>'
            pattern = re.compile(regex, re.I | re.DOTALL | re.MULTILINE)
            estadodepelicula = remover_acentos(pattern.search(htmlstring).group(1))
        except:
            estadodepelicula = "-"
        #print estadodepelicula
        try:
            regex='Emitido:</strong> <span class="c">(.+?)</span>'
            pattern = re.compile(regex, re.I | re.DOTALL | re.MULTILINE)
            emiciondepelicula = remover_acentos(pattern.search(htmlstring).group(1))
        except:
            emiciondepelicula = "-"
        #print emiciondepelicula
        try:
            regex='Episodios:</strong> <span class="c">(.+?)</span>'
            pattern = re.compile(regex, re.I | re.DOTALL | re.MULTILINE)
            episodiosdepelicula = pattern.search(htmlstring).group(1)
        except:
            episodiosdepelicula = "-"
        #print episodiosdepelicula
        try:
            regex='Duración:</strong> <span class="c">(.+?)</span>'
            pattern = re.compile(regex, re.I | re.DOTALL | re.MULTILINE)
            duraciondepelicula = pattern.search(htmlstring).group(1)
        except:
            duraciondepelicula = "-"
        #print duraciondepelicula
        #//////////////////////////////////////////////////////////////////////////////////
        # Obtiene los enlaces de todas las peliculas y las guarda en links
        #//////////////////////////////////////////////////////////////////////////////////
        regex='<ul id="listado">(.+?)</ul>'
        pattern = re.compile(regex, re.I | re.DOTALL | re.MULTILINE)
        temp_var = pattern.search(htmlstring).group(1)
        regex='<li><a href="(.+?)"><strong>(.+?)</strong> <small class=".+">(.+?)</small></a></li>'
        pattern = re.compile(regex, re.I | re.DOTALL | re.MULTILINE)
        temp_var = pattern.findall(temp_var)
        url="http://www.animeid.tv"
        for i in temp_var:
            weblistado= url+i[0]
            #print weblistado
            capitulolistado = remover_acentos(i[1])
            #print capitulolistado
            temp_var = i[2]
            regex='(.*) (.*) (.*)'
            pattern = re.compile(regex, re.I | re.DOTALL | re.MULTILINE)
            temp_var2 = pattern.search(temp_var)
            dialistado = temp_var2.group(1)
            meslistado = temp_var2.group(2).replace('Ene','01').replace('Feb','02').replace('Mar','03').replace('Abr','04').replace('May','05').replace('Jun','06').replace('Jul','07').replace('Ago','08').replace('Sep','09').replace('Oct','10').replace('Nov','11').replace('Dic','12')
            aniolistado =  temp_var2.group(3)
            fechalistado = aniolistado + "/" + meslistado + "/" + dialistado
            #print fechalistado
            r=br.open(weblistado)
            htmlstring=br.response().read()
            print htmlstring


hay esta yo uso es mechanize. ese es el codigo.

como podran ver arriba los <iframe>(videos) son varios.

gracias de antemano

Que barbaro amigo, no hay necesidad de pegar todo ese asunto en el post, mejor pon un enlace a pastebin o ponlo en un spoiler. Anyway, usa BeautifulSoup para eso, te ahorras mucho trabajo. No tienes permitido ver los links. Registrarse o Entrar a mi cuenta. Esa pagina lo unico que esta es algo mal organizada, nada de cifrada xD Pero con ese salcoho de codigo que has puesto abajo no te puedo ayudar mucho, si das las url  seria mucho mejor.
When I was a child, I spake as a child, I understood as a child, I thought as a child: but when I became a man, I put away childish things.

Como te dice Neutron, en este caso lo que acabas de poner es inservible. Si quieres que te ayuddemos tendrás que poner el link de la web o subir el código a pastebin (desde el body, el CSS es inútil) aunque dices que quieres sacar todos los iframes y código que colocaste arriba no hay una sola etiqueta iframe.

La web no está encriptada, lo más "raro" que puedes encontrar es que las imágenes están en el mismo html codificadas en base64 y no en un archivo en el servidor.

Saludos!







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

listo post modificado (disculpen)

ahora si acepto ayudas :D

Lo que necesitas no está en iframes, está en un json dentro de un div.

Código: python
# -*- coding: utf-8 -*-

import re
import json
import urllib

url = "http://www.animeid.tv/ver/magi-the-kingdom-of-magic-13"

data = urllib.urlopen(url).read()
exp = re.findall('<div class="parte" data=(.*?)>.*?</div>', data, re.S | re.MULTILINE)
for i in exp:
    print json.loads(i)
    print


Organizalo para sacar la información que necesites.

Saludos!







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

Enero 05, 2014, 12:40:33 PM #5 Ultima modificación: Enero 05, 2014, 12:58:37 PM por juliianc95
Muchas gracias sos un capo. me hace falta un cursito de urlib :/

aunque no encuentro la forma de sacar cada uno de los json.loads. me lo entrega en lista. me ayudas con esta parte?

No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
aunque no encuentro la forma de sacar cada uno de los json.loads. me lo entrega en lista. me ayudas con esta parte?

Te está regresando un string

Saludos!







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