
Acceder a datos de una web externa
Publicado por Francisco José (6 intervenciones) el 30/03/2017 21:26:35
Hola, estoy intentando hacer una aplicación web para catalogar peliculas. Una de las cosas que quiero es sacar la información de la pelicula de distintas páginas web. De momento estoy usando la libreria lxml con el siguiente código.
Con este código consigo acceder a los datos y guardarlos. El problema que tengo es que no me da problemas de codificación (tildes y la ñ) mientras el título de la película no lleve un caracter especial. Es decir si el titulo es "El bar", consigo guardar todos los datos con sus vocales acentuadas y demas caracteres mas especiales. Pero si el título fuera Plácido tendría problemas con la codificacíon. Le he dado vueltas y no se porque falla. Tengo otro metodo, este que accedo a la url del buscador de filmaffinity, donde al introducir un titulo en un formulario me da una busqueda con los titulos que concuerdan y aquí tambien me falla la codificación.
Entendería que me fallará siempre por no tener algo bien configurado, pero no entiendo porque una dirección me falla solo porque el tíulo de la película pueda llevar tilde o no.
A ver si alguien que ha usado esta librería me da una explicación o sino una alternativa. Uso el lxml por el xpath que me es muy comodo a la hora de acceder a los distintos elementos de la página.
Un saludo y espero respuestas.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
url = "http://www.filmaffinity.com/es/film454394.html" # Es un ejemplo de url
pagina_xml = html.parse(url)
pelicula = {}
# Titulo pelicula
pelicula['titulo'] = pagina_xml.xpath('//h1[@id="main-title"]/span/text()')[0]
ficha_pelicula = pagina_xml.xpath('//div[@id="left-column"]/dl/dt')
for i in range(len(ficha_pelicula)):
# Titulo original
if ficha_pelicula[i].text == u'Título original':
pelicula['titulo_original'] =ficha_pelicula[i].getnext().text.strip()
# Año
if ficha_pelicula[i].text == u'Año':
pelicula['anio'] = ficha_pelicula[i].getnext().text.strip()
# Duración
if ficha_pelicula[i].text == u'Duración':
pelicula['duracion'] = ficha_pelicula[i].getnext().text.strip().replace(" min.", '')
# Sinopsis
if ficha_pelicula[i].text == u'Sinopsis':
pelicula['sinopsis'] = ficha_pelicula[i].getnext().text.strip()
print(pelicula)
Con este código consigo acceder a los datos y guardarlos. El problema que tengo es que no me da problemas de codificación (tildes y la ñ) mientras el título de la película no lleve un caracter especial. Es decir si el titulo es "El bar", consigo guardar todos los datos con sus vocales acentuadas y demas caracteres mas especiales. Pero si el título fuera Plácido tendría problemas con la codificacíon. Le he dado vueltas y no se porque falla. Tengo otro metodo, este que accedo a la url del buscador de filmaffinity, donde al introducir un titulo en un formulario me da una busqueda con los titulos que concuerdan y aquí tambien me falla la codificación.
Entendería que me fallará siempre por no tener algo bien configurado, pero no entiendo porque una dirección me falla solo porque el tíulo de la película pueda llevar tilde o no.
A ver si alguien que ha usado esta librería me da una explicación o sino una alternativa. Uso el lxml por el xpath que me es muy comodo a la hora de acceder a los distintos elementos de la página.
Un saludo y espero respuestas.
Valora esta pregunta


0