El día 4 de marzo de 2011 15:16, (P@vel) <pdlo...@uci.cu> escribió:
> A ver yo lo que estoy haciendo es cojer el html de una pagina de internet
> con :
> f = urllib2.urlopen(url_page)
> data = f.read()
> mi problema es que cuando parseo esto con BeautifulSoup puedo obtener cosas
> como esto [u'ESPAÑA'] y necesito convertir eso que esta en la lista a un
> str, para poder meterlo en un campo de una tabla en mi base de datos

Bueno, al menos vemos que hay una parte que funciona. No entiendo el
resto del código que pones pues 'codecs.open' es para manejar ficheros
de texto y no tiene sentido el modo como lo usas.

Pero de lo que comentas, parece que ya tienes la cadena unicode y
donde te surgen los problemas es en la introducción de la cadena en la
base de datos (que no sabemos cuál es).

De lo que dije sobre unicode y python habría que añadir un corolario
sobre lo que pasa con las bases de datos (me centraré más en oracle ya
que, haciendo honor a su nombre, es la más esotérica de todas):

- Tablas: del mismo modo que los ficheros de texto, las tablas
utilizan una codificación de caracteres que es fijada en el momento de
su creación. Un problema frecuente proviene de considerar como tamaño
de campo el número de bytes y no el número de caracteres. El tamaño de
una cadena codificada en utf8 es posible que no quepa en un tamaño de
campo pensando para una cadena ascii. En oracle se puede dar tamaños
de campos en bytes o en chars, recomendando usar chars como medida de
tamaño.

- Cliente-Servidor: cuando se estable una conexión con la base de
datos, el canal también usa una codificación de caracteres. Esta
codificación se puede fijar como un parámetro de la conexión, con
excepción en oracle que lo toma desde una variable de entorno. Para
utf8 y español sería definir la siguiente variable:

  NLS_LANG=SPANISH_SPAIN.AL32UTF8


Espero que ésto te sea de alguna ayuda. Deberías precisar mejor el
problema, con parte de código "concreto" que usas y el texto del
"error" que te da.


>
> ya probe con hacer esto dentro de mi funcion
> def
> get_html(url_page="http://www.bolsamadrid.es/esp/mercados/fondos/htm/trenta100.htm";):
>     proxy_h = urllib2.ProxyHandler({"http" :
> "http://pdlo...@hlg.uci.cu:paveling84074@100.0.0.1:3128"})
>     opener = urllib2.build_opener(proxy_h)
>     urllib2.install_opener(opener)
>     f = urllib2.urlopen(url_page)
>
>     data = f.read()
>     data = codecs.open(data) #Esto
>     return data
> y me saca todo el codigo de la pagina y la otra funcion a la cual le paso lo
> que tengo en data, ahora no hace nada
_______________________________________________
Python-es mailing list
Python-es@python.org
http://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/

Responder a