Buenas amigo mi problema es el siguiente. se que en el titulo no me explique mucho. pero en vd no sabia como preguntarles.
tengo el siguiente codigo:
try:
regex = '<span itemprop=\"director\".+?><span itemprop=\"name\">(.+?)<\/span><\/a><\/span>'
pattern = re.compile(regex, re.I | re.DOTALL | re.MULTILINE)
temp_var = re.search(pattern, htmlstring).group(0)
regex='<span class="ac.+?>(.+?)</span>'
pattern = re.compile(regex, re.I | re.DOTALL | re.MULTILINE)
temp_var2 = pattern.findall(temp_var)
for director in temp_var2:
print director
al yo imprimir director me lo da en la pantalla de python. pero al insertarlo en la base de datos me da este error.
Traceback (most recent call last):
File "C:\Python27\BotSensaCine.py", line 346, in <module>
sql = "INSERT INTO peliculas (poster,titulospain,titulo,anio,duracion,pais,estreno,idioma,director,protagonistas,distribuidora,genero,presupuesto,sinopsi,guionistas,musica,fotografia,trailer1,trailer2,tt1,tt2) VALUES (\"%s\",\"%s\",\"%s\", \"%s\", \"%s\", \"%s\",\"%s\", \"%s\", \"%s\", \"%s\",\"%s\", \"%s\", \"%s\", \"%s\",\"%s\", \"%s\", \"%s\", \"%s\", \"%s\",\"%s\", \"%s\")" %(re.escape(poster),re.escape(titulospain), re.escape(titulo), re.escape(anio), re.escape(duracion), re.escape(pais), re.escape(estreno), re.escape(idioma), re.escape(director), re.escape(protagonistas), re.escape(distribuidora) , re.escape(genero), re.escape(presupuesto), re.escape(sinopsi), re.escape(guionistas), re.escape(musica), re.escape(fotografia),re.escape(trailer1), re.escape(trailer2),re.escape(tt1), re.escape(tt2))
NameError: name 'director' is not defined
gracias de antemano.
¿Puedes poner el resto del código?
Saludos!
como el resto man? todo el bot?..
lo de expresiones regulares esta bien por que al imprimirlo con print no da error. pero al insertarlo en la base de datos me lanza el error. que sera?
No tienes permitido ver enlaces.
Registrate o Entra a tu cuenta
como el resto man? todo el bot?..
lo de expresiones regulares esta bien por que al imprimirlo con print no da error. pero al insertarlo en la base de datos me lanza el error. que sera?
Sólo era necesario todo el bloque try. Pero ahora que tengo el código completo te puedo ayudar mejor.
Primero: El error te dice que la variable director no está definida.
Segundo: La variable director no está definida porque la expresión regular no encuentra coincidencias (no salta el except porque no ocurre un error) así que el for np define la variable director.
Tercero: La solución es un simple condicional:
if temp_var2:
for director in temp_var2:
print "director", director
else:
print "No hay director"
director = "-"
Ahora,como sugerencia: no es necesario que recorras todo el resultado de la expresión regular porque la variable director sólo contendrá el último elemento. Así que puedes usar temp_var2[-1] si quieres el último resultado de la expresión regular.
El segundo error que te dará cuando ejecutes el código corregido será:
AttributeError: 'list' object has no attribute 'join'
El problema es que el valor de genero es una lista y el método re.escape() recibe como argumento un string, la solución que puedes implementar si quieres tener en la cadena todos los generos sería poner:
genero = ", ".join(genero)
justo despues de la línea:
genero = pattern.findall(htmlstring)
Saludos!
Gracias amigo. ahora otra ayudita aqui.
tengo el siguiente codigo
Citar
regex = '<li><span class="film_info lighten fl">\nGénero</span>(.*?)<\/li>'
pattern = re.compile(regex, re.I | re.DOTALL | re.MULTILINE)
temp = re.search(pattern, htmlstring).group(0)
print temp
me da el siguiente error
Citar
Traceback (most recent call last):
File "C:\Python27\BotSensaCine.py", line 232, in <module>
temp = re.search(pattern, htmlstring).group(0)
AttributeError: 'NoneType' object has no attribute 'group'
Gracias de antemano.
No tienes permitido ver enlaces.
Registrate o Entra a tu cuenta
Gracias amigo. ahora otra ayudita aqui.
tengo el siguiente codigoCitar
regex = '<li><span class="film_info lighten fl">\nGénero</span>(.*?)<\/li>'
pattern = re.compile(regex, re.I | re.DOTALL | re.MULTILINE)
temp = re.search(pattern, htmlstring).group(0)
print temp
me da el siguiente errorCitar
Traceback (most recent call last):
File "C:\Python27\BotSensaCine.py", line 232, in <module>
temp = re.search(pattern, htmlstring).group(0)
AttributeError: 'NoneType' object has no attribute 'group'
Gracias de antemano.
Es el mismo error de antes, la expresión regular no encuentra coincidencias así que regresa un objeto None. Simplemente agrega un condicional para verificar si la expresión regular encontro una coincidencia.
regex = '<li><span class="film_info lighten fl">\nGénero</span>(.*?)<\/li>'
pattern = re.compile(regex, re.I | re.DOTALL | re.MULTILINE)
temp = re.search(pattern, htmlstring)
if temp:
print temp.group(0)
Saludos!
ve tengo el siguiente codigo que me distes:
try:
regex = '<span itemprop=\"genre\">(.+?)<\/span><\/span>'
pattern = re.compile(regex, re.I | re.DOTALL | re.MULTILINE)
temp_var = pattern.findall(htmlstring)
if temp_var:
genero = ", ".join(genero)
for genero in temp_var:
print genero
else:
genero = "-"
except:
genero = "-"
al insertar como me dijistes sale en la base de datos asi:
c,o,m,e,d,i,a
gracias
listo problema resuelto tenia que quitar el for y hacer lo que me habias dicho. gracias