Página 1 de 2
Canal creado solo encuentra un elemento
Publicado: 15 Nov 2016, 15:55
por jvc99
Buenas, pues eso, he estado creando un canal y he conseguido que me scrape un elemento solo, el primero, no consigo que me scrape el resto de los elementos de la página, el codigo que he utilizado es este:
Código: Seleccionar todo
# Descarga la página
data = scrapertools.cachePage(item.url)
# Extrae las entradas de la pagina seleccionada
patronvideos = '<div class="vw-post-box vw-post-style-block vw-post-format-standard">.*?.<h3 class="vw-post-box-title">.*?.<a href="([^"]+)">(.*?)</a>'
matches = re.compile(patronvideos,re.DOTALL).findall(data)
if DEBUG: scrapertools.printMatches(matches)
itemlist = []
for scrapedurl,scrapedtitle in matches:
url = urlparse.urljoin(item.url,scrapedurl)
title = scrapedtitle.strip()
# Añade al listado
itemlist.append( Item(channel=item.channel, action="findvideos", title=title , fulltitle=title, url=url , viewmode="movie", folder=True) )
return itemlist
Un saludo compañeros, y espero poder hacer un canal decente para que todos lo podamos disfrutar

)
Re: Canal creado solo encuentra un elemento
Publicado: 15 Nov 2016, 16:05
por SeiTaN
Sin saber la url desde la que obtienes los datos es dificil saber que es exactamente lo que te falla.
Si solo te muestra un dato y es el primero, sería como este ejemplo.
"seleccioname todos los niños que sean el primero de la lista" = 1
"seleccioname todos los niños" = n
Ahora tienes que ver que parte de la expresion regular hace que marque "el primero de la lista" y eliminarlo.
Re: Canal creado solo encuentra un elemento
Publicado: 15 Nov 2016, 17:22
por jvc99
Buenas Seitan, te inserto el código completo
Código: Seleccionar todo
# -*- coding: utf-8 -*-
#------------------------------------------------------------
# pelisalacarta - XBMC Plugin
# http://blog.tvalacarta.info/plugin-xbmc/pelisalacarta/
#------------------------------------------------------------
import re
import urlparse
from core import config
from core import logger
from core import scrapertools
from core.item import Item
DEBUG = config.get_setting("debug")
def mainlist(item):
logger.info("pelisalacarta.channels.pruebitase mainlist")
if item.url=="":
item.url = "http://paginapruebas.esy.es/"
# Descarga la página
data = scrapertools.cachePage(item.url)
# Extrae las entradas de la pagina seleccionada
patronvideos = '<div class="vw-post-box vw-post-style-block vw-post-format-standard">.*?.<h3 class="vw-post-box-title">.*?.<a href="([^"]+)">(.*?)</a>'
matches = re.compile(patronvideos,re.DOTALL).findall(data)
if DEBUG: scrapertools.printMatches(matches)
itemlist = []
for scrapedurl,scrapedtitle in matches:
url = urlparse.urljoin(item.url,scrapedurl)
title = scrapedtitle.strip()
# Añade al listado
itemlist.append( Item(channel=item.channel, action="findvideos", title=title , fulltitle=title, url=url , viewmode="movie", folder=True) )
return itemlist
¿Ves algún error?
Re: Canal creado solo encuentra un elemento
Publicado: 15 Nov 2016, 18:35
por SeiTaN
Ahí tienes las 4 pelis
Código: Seleccionar todo
# -*- coding: utf-8 -*-
# ------------------------------------------------------------
# pelisalacarta - XBMC Plugin
# http://blog.tvalacarta.info/plugin-xbmc/pelisalacarta/
# ------------------------------------------------------------
import re
import urlparse
from core import config
from core import logger
from core import scrapertools
from core.item import Item
DEBUG = config.get_setting("debug")
def mainlist(item):
logger.info("pelisalacarta.channels.pruebitase mainlist")
if item.url == "":
item.url = "http://paginapruebas.esy.es/"
# Descarga la página
data = scrapertools.cache_page(item.url)
data = re.sub(r"\n|\r|\t|\s{2}", "", data)
# Extrae las entradas de la pagina seleccionada
patron = '<h3 class="vw-post-box-title"><a href="([^"]+)".*?>(.*?)</a></h3>'
matches = re.compile(patron, re.DOTALL).findall(data)
if DEBUG:
scrapertools.printMatches(matches)
itemlist = []
for scrapedurl, scrapedtitle in matches:
url = urlparse.urljoin(item.url,scrapedurl)
title = scrapedtitle.strip()
# Añade al listado
itemlist.append(Item(channel=item.channel, action="findvideos", title=title , fulltitle=title, url=url,
viewmode="movie", folder=True) )
return itemlist
Re: Canal creado solo encuentra un elemento
Publicado: 15 Nov 2016, 18:45
por Hernan_Ar_c
yo te recomiendo que uses, la pagina
http://regexr.com/ para comprobar tus expresiones, es muy fácil y te evita quebraderos de cabeza, simplemente copia y pega el código fuente de la pagina en la parte Text y tu expresión regular en Expressión y ahí mismo te dice cuanto resultados encuentra tu expresión.
Saludos y espero que te sirva.
Re: Canal creado solo encuentra un elemento
Publicado: 15 Nov 2016, 19:25
por jvc99
SeiTaN escribió:Ahí tienes las 4 pelis
Código: Seleccionar todo
# -*- coding: utf-8 -*-
# ------------------------------------------------------------
# pelisalacarta - XBMC Plugin
# http://blog.tvalacarta.info/plugin-xbmc/pelisalacarta/
# ------------------------------------------------------------
import re
import urlparse
from core import config
from core import logger
from core import scrapertools
from core.item import Item
DEBUG = config.get_setting("debug")
def mainlist(item):
logger.info("pelisalacarta.channels.pruebitase mainlist")
if item.url == "":
item.url = "http://paginapruebas.esy.es/"
# Descarga la página
data = scrapertools.cache_page(item.url)
data = re.sub(r"\n|\r|\t|\s{2}", "", data)
# Extrae las entradas de la pagina seleccionada
patron = '<h3 class="vw-post-box-title"><a href="([^"]+)".*?>(.*?)</a></h3>'
matches = re.compile(patron, re.DOTALL).findall(data)
if DEBUG:
scrapertools.printMatches(matches)
itemlist = []
for scrapedurl, scrapedtitle in matches:
url = urlparse.urljoin(item.url,scrapedurl)
title = scrapedtitle.strip()
# Añade al listado
itemlist.append(Item(channel=item.channel, action="findvideos", title=title , fulltitle=title, url=url,
viewmode="movie", folder=True) )
return itemlist
Muchas gracias Seitan

Re: Canal creado solo encuentra un elemento
Publicado: 15 Nov 2016, 19:26
por jvc99
Hernan_Ar_c escribió:yo te recomiendo que uses, la pagina
http://regexr.com/ para comprobar tus expresiones, es muy fácil y te evita quebraderos de cabeza, simplemente copia y pega el código fuente de la pagina en la parte Text y tu expresión regular en Expressión y ahí mismo te dice cuanto resultados encuentra tu expresión.
Saludos y espero que te sirva.
Y en mi caso, cual seria la expresión? La pongo en regexr y me da error.
Re: Canal creado solo encuentra un elemento
Publicado: 15 Nov 2016, 19:46
por SeiTaN
Yo uso regex100.com
https://regex101.com/r/cR8aC9/6
La expresion es
<h3 class="vw-post-box-title"><a href="([^"]+)".*?>(.*?)</a></h3> usando como delimitiador
'
En el texto donde tiene que buscar es lo que salga de data.
Código: Seleccionar todo
# Descarga la página
data = scrapertools.cache_page(item.url)
data = re.sub(r"\n|\r|\t|\s{2}", "", data)
logger.debug("data es %s) % data)
Si te fijas despues de obtener los datos de la página, lo que se hace es eliminar los saltos de línea, espacios, tabulaciones...
data = re.sub(r"\n|\r|\t|\s{2}", "", data) Asi resulta más sencillo usar expresiones regulares sin tener que meter comodines y demás.
Re: Canal creado solo encuentra un elemento
Publicado: 15 Nov 2016, 20:11
por Hernan_Ar_c
Que buen truco ese SeiTaN la verdad, nunca lo había utilizado... todos los días se aprende algo nuevo

Pero si como comentas mirando la expresión utilizada el problema en si son los saltos de linea, la manera sin el excelente truco de SeiTaN seria...
Código: Seleccionar todo
<h3 class="vw-post-box-title">\n.*?<a href="([^"]+)".*?>(.*?)<\/a>\n.*?<\/h3>
\n significa salto de linea.
Ah y el error que te da en regexr, es por que tenes que escapar los signos "/" con "\" antes fíjate en como lo escribí arriba
Saludos y suerte con ese canal yo también soy bastante nuevo y me tomo tiempo aprender como armar los canales, pero no es imposible hay que ponerle ganas nada mas.
Re: Canal creado solo encuentra un elemento
Publicado: 15 Nov 2016, 22:04
por jvc99
Muchas gracias a los dos

, ya me manejo mucho mejor, he hecho un buscador y he añadido las thumbnails. Lo único que no consigo hacer funcionar es que me reproduzca directamente la película, sin que me lleve a la siguiente ventana que dice "Enlace encontrado con openload", ¿hay alguna método que no sea muy engorroso para hacer esto?