Página 2 de 2

Re: Intento de hacer Canal "SOS"

Publicado: 01 May 2016, 23:13
por SeiTaN
Con los patrones (expresiones regulares) uno aprende a base de pegarse, te lo digo por propia experiencia, una vez que lo asimilas, lo chungo es que luego te llega a gustar xDD

De lo puesto por robalo..

next_page_url = scrapertools.find_single_match(data,'<li><a href="([^"]+)" title="Siguiente')

te busca el primer elemento que encuentre en data, con el patrón

Luego el patrón se divida en varias partes.

'<li><a href="([^"]+)" title="Siguiente'
parte fija y parte variable

lo que se intenta es obtener el valor que hay dentro de "href" y con regex lo que se le dice es:
- () elemento de captura lo que haya dentro se guarda.
- [^"] seleccioname todo menos ".
- + seleciona 1 o más elementos.

Re: Intento de hacer Canal "SOS"

Publicado: 01 May 2016, 23:38
por Cmos
robalo y SeiTaN ya te lo han comentado y explicado muy bien, creo que donde tienes que centrar tu atención es en las expresiones regulares, están bien formadas pero son demasiado concisas (porque incluyen muchas etiquetas html) y en cuanto haya una pequeña variación en el código te quedas sin coincidencias. Yo te aconsejaría utilizar esta página para probar las expresiones poniendo el texto donde quieres buscarlas, creo que lo verás más claro así: http://www.regexr.com/

Utilizando el código html de una película de esa página y comparándola con la expresión regular que utilizas:

Código: Seleccionar todo

<li class="t4"><a class="i" href="http://www.sipeliculas.com/sisters-online" title="Ver Película Sisters (2015) online completa en Español Latino"><i></i><img src="http://img.sipeliculas.com/img-mediano/sisters-5697ca81d91b1.jpg" alt="Sisters"/><div class="c">HD real 720p</div><div class="id l1"></div></a><h3><a href="http://www.sipeliculas.com/sisters-online" title="Ver Película Sisters (2015) online completa en Español Latino">Sisters</a></h3><span>2015</span><div class="ttip"><h5>Sisters - (2015)</h5><p><span>Después de mucho tiempo de no saber nada de ambas partes , dos hermanas por caprichos del destino se juntan para ordenar la casa donde nacieron, ya que la venderán pero antes de eso deciden hacer una fiestas como en sus tiempos dorados , invitando a...</span> <b>4 opciones para ver online</b></p><i></i></div></li>
Tu expresión regular:

Código: Seleccionar todo

src="([^"]+)" alt="[^"]+"/></a><h3><a href="([^"]+)" title="[^"]+">[^"]+</a></h3><span>[^"]+</span><div class="[^"]+"><h5>([^<]+)</h5><p><span>([^<]+)</span>
Si te fijas a partir de "alt="Sisters"/>" ya no coincide. Lo suyo sería hacerla más general. En primer lugar, colocar una etiqueta para decirle a la expresión donde empezar a buscar, esta etiqueta deben tenerla todas las películas, en el ejemplo podría ser li class="t4" o <a class="i", ya tienes que ser tú la que encuentre cual se repite en todas. Y luego ir saltando con ".*?" (esto viene a ser, me da igual lo que haya en medio) hasta llegar a la siguiente coincidencia, tomando el ejemplo de tu expresión:

Código: Seleccionar todo

Se podría cambiar esto:  alt="[^"]+"/></a><h3><a href="([^"]+)"
por esto: .*?<h3><a href="([^"]+)"
Haciendo eso evitas que si falta o cambia alguna etiqueta html por medio te falle. Lo suyo sería que intentases aplicar lo que te comentamos, y una vez que veas que ya te funcionan bien todas las opciones (Cartelera, Más vistas, etc) y la paginación, entonces te metes con findvideos, sino creo que vas a ir acumulando cosas y se te va a hacer muy cuesta arriba ;)

Re: Intento de hacer Canal "SOS"

Publicado: 31 May 2016, 00:09
por leylay
hola a todos disculpadme por haberme tardado tanto en responder, hoy retome esto, sigo estancada en la paginacion,

next_page_url = scrapertools.find_single_match(data,'<li><a href="([^"]+)">[^"]+</a></li><li>')

he puesto esa y finalmente hice casoy puse el que me dijisteis,

Código: Seleccionar todo

   next_page_url = scrapertools.find_single_match(data,'<li><a href="([^"]+)" title="Siguiente')
    if next_page_url!="":
        import inspect
        itemlist.append(
            Item(
                channel = __channel__,
                action = inspect.stack()[0][3],
                title = ">> Página siguiente",
                url = urlparse.urljoin( item.url, "/" + next_page_url )
            )
        )
sin embargo me he quedado pescando XD porque ese si que va y el mio no??? en el codigo fuente por ejemplo pone lo siguiente href="cartelera/2">2</a></li><li> , o estoy ciega o es que yo veo que lo logico era que ese funcionara mas que el de title siguiente, cuando esto se cuentra en la pagina dos por ejemplo si sacamos el codigo fuente, por otro lado este codigo en el que se importa a que es debido? y este codigo de inspect atack, el de url si lo he visto en otro pero por ejemplo la "/" +nex page url no lo habia visto en otros codigos.

, action="findvideos" , title=title , url=urlparse.urljoin(item.url,next_page_url), folder=True ) )

porque cambia esta parte, y la action pasa inspect.stack()[0][3],, el title si lo entiendo porque es el nombre que recibirá esa sección de pagina siguiente,porque la urlcambia apartir de aqui: item.url, "/" + next_page_url ) y forlder porque se va entiendo que forlder es la carpeta, en donde por ejemplo tenemos un numero x de contenido, por ejemplo generos, año etc.



aquí esta.

https://drive.google.com/file/d/0Bxp_K- ... dvb1U/view

https://drive.google.com/file/d/0Bxp_K- ... tSX0E/view

pd; gracias Robalo, Cmos, seitan por ayudarme tanto. os dejo el link para que veais en que me quede. Tambien segui tu consejo Cmos, muchas gracias, ahora capta mejor los titulos.

Re: Intento de hacer Canal "SOS"

Publicado: 31 May 2016, 00:56
por Cmos
De nada, espero que poco a poco vayamos resolviendo tus dudas y no liarte más :lol:
leylay escribió:sin embargo me he quedado pescando XD porque ese si que va y el mio no???
Tu expresión regular falla aquí: >[^"]+</a> Le estás diciendo que avance hasta encontrar unas comillas pero no las hay, debería ser así: >[^<]+</a>
De todas formas, te hemos recomendado que utilices el que pone title="Siguiente porque si estás en la página 2, con tu expresión regular el primer resultado sería este: <li><a href="cartelera">1</a></li><li> , es decir, volverías a la página 1, en cambio si utilizas el de siguiente siempre va a ir para delante.

El inspect.stack()[0][3] lo que hace es recuperar el nombre de la función que se acaba de ejecutar, esto es lo mismo que poner en tu caso action="peliculas", y te recomiendo que pongas este último porque así lo vas a ver más claro ;)

En cuanto a la url, como el valor que tiene next_page_url en el ejemplo sería este "cartelera/2", tendrías que unirle la dirección principal de la página para completarla (http://www.sipeliculas.com/cartelera/2). Esto dependerá de cada página, algunas tendrán la url completa y otras un trozo como en este caso. Ej de código:

Código: Seleccionar todo

url = urlparse.urljoin("http://www.sipeliculas.com/", next_page_url)
Y por último en cuanto al parámetro folder, es una convención que se utiliza en pelisalacarta para indicar si al ejecutar la acción se quiere volver a sacar en pantalla una serie de items (folder=True) o no, como cuando el siguiente paso es reproducir un vídeo (folder=False). Por defecto, excepto cuando action es igual a play, el addon entiende que el valor de folder es True, por lo que no es indispensable ponerlo.

Re: Intento de hacer Canal "SOS"

Publicado: 12 Jul 2016, 23:09
por leylay
hola a todos de nuevo la web cambio y tuve que cambiar el regex hara un par de dias, perdonad mi ausencia he estado ocupada y la verdad que desilucionada XD no consigo que me muestre los enlaces estoy mortificada.

https://drive.google.com/file/d/0Bxp_K- ... sp=sharing

https://drive.google.com/file/d/0Bxp_K- ... sp=sharing


he hecho tambien banner y logo para ir mejorandolo un poco por lo menos en eso

en el codigo fuente view-source:http://www.sipeliculas.com/abzurdah/opcion-3 por ejemplo de esta pelicula busco el link que funciona ese en particular lo hace iframe src="http://powvideo.net/embed-8kl937k5kp44-650x360.html" para mi ese seria el link a tomar pero estoy un poco que no veo la luz en esta parte, gracias a todos. ;)