Usa este foro para preguntar dudas sobre la forma de hacer algo, que has visto en algún sitio que se puede hacer, pero no tienes ni idea de como.
-
jvc99
- Mensajes: 20
- Registrado: 13 Ene 2016, 00:12
Mensaje
por jvc99 » 15 Nov 2016, 15:55
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
)
-
SeiTaN
- Mensajes: 1308
- Registrado: 13 Sep 2015, 19:01
Mensaje
por SeiTaN » 15 Nov 2016, 16:05
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.
-
jvc99
- Mensajes: 20
- Registrado: 13 Ene 2016, 00:12
Mensaje
por jvc99 » 15 Nov 2016, 17:22
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?
-
SeiTaN
- Mensajes: 1308
- Registrado: 13 Sep 2015, 19:01
Mensaje
por SeiTaN » 15 Nov 2016, 18:35
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
-
Hernan_Ar_c
- Mensajes: 276
- Registrado: 09 Jun 2016, 15:49
Mensaje
por Hernan_Ar_c » 15 Nov 2016, 18:45
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.
Plataforma: Kodi 17.3
S.O: Fedora Workstation (Linux)
Version del Addon: 4.2.0~Customizado
-
jvc99
- Mensajes: 20
- Registrado: 13 Ene 2016, 00:12
Mensaje
por jvc99 » 15 Nov 2016, 19:25
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
-
jvc99
- Mensajes: 20
- Registrado: 13 Ene 2016, 00:12
Mensaje
por jvc99 » 15 Nov 2016, 19:26
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.
-
SeiTaN
- Mensajes: 1308
- Registrado: 13 Sep 2015, 19:01
Mensaje
por SeiTaN » 15 Nov 2016, 19:46
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.
-
Hernan_Ar_c
- Mensajes: 276
- Registrado: 09 Jun 2016, 15:49
Mensaje
por Hernan_Ar_c » 15 Nov 2016, 20:11
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.
Plataforma: Kodi 17.3
S.O: Fedora Workstation (Linux)
Version del Addon: 4.2.0~Customizado
-
jvc99
- Mensajes: 20
- Registrado: 13 Ene 2016, 00:12
Mensaje
por jvc99 » 15 Nov 2016, 22:04
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?
¿Quién está conectado?
Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 0 invitados