Foros del Web » Programando para Internet » Python »

Pyfacebook

Estas en el tema de Pyfacebook en el foro de Python en Foros del Web. Alguien ha programada con este modulo...la verdad no lo puedo instalar correctamente..... SI alguna vez lo han usado me podrian pasar referencias sobre este modulo....
  #1 (permalink)  
Antiguo 20/07/2010, 18:05
 
Fecha de Ingreso: abril-2010
Ubicación: Rosario
Mensajes: 1.850
Antigüedad: 9 años, 9 meses
Puntos: 228
Pyfacebook - Cookie - HTML

Alguien ha programada con este modulo...la verdad no lo puedo instalar correctamente..... SI alguna vez lo han usado me podrian pasar referencias sobre este modulo.

Última edición por sam90; 21/07/2010 a las 21:13
  #2 (permalink)  
Antiguo 21/07/2010, 10:02
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Pyfacebook

Ni idea, pero quizás podamos ayudarte a instalarlo.
¿de dónde lo descargaste?
¿cómo intentaste instalarlo?
¿qué error o problema te aparece?
  #3 (permalink)  
Antiguo 21/07/2010, 18:29
 
Fecha de Ingreso: abril-2010
Ubicación: Rosario
Mensajes: 1.850
Antigüedad: 9 años, 9 meses
Puntos: 228
Respuesta: Pyfacebook

Logre instalarlo...pero no era bien lo que queria....

Mas o menos lo que quiero hacer es acceder desde un programa al facebook, mas que nada a la pagina de cumpleaños.... para asi tener un aplicacion que me avise de los cumpleaños.....

No me gusta entrar tanto al facebook pero la verdad para los cumpleaños es buenisimo...de paso aprende un poco jajaj

Mira esto es lo que tengo:


import urllib2,urllib

try:
params = urllib.urlencode({"email": "[email protected]", "pass": "xxxx"})
f = urllib2.urlopen("https://login.facebook.com/login.php?login_attempt=1",params)
print f.read()
f.close()
except HTTPError, e:
print "Ocurrio un error"
print e.code
except URLError, e:
print "Ocurrio O un error"
print e.reason

Eso me muestra una pagina, que la guarde en un archivo y al cargarla me dice que necesito las cookie, es posible conservar las cookies con urllib?

Última edición por sam90; 21/07/2010 a las 18:56
  #4 (permalink)  
Antiguo 21/07/2010, 19:14
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Pyfacebook

Sí se puede, de hecho lo hace de forma predeterminada. Pero no vas a poder luego abrir el archivo de forma local y tener la sesión abierta, porque no hay forma de decirle al navegador 'tomá, usá esta cookie'.

Entiendo el objetivo, pero me parece que lo estás intentando de forma incorrecta. Lo que debés hacer es 'navegar' con urllib (es decir, hacer que pida al servidor una página específica) hacia la página que necesitás, y luego analizar el contenido (búsqueda de cadenas, o expresiones regulares)


Saludos.
  #5 (permalink)  
Antiguo 21/07/2010, 19:55
 
Fecha de Ingreso: abril-2010
Ubicación: Rosario
Mensajes: 1.850
Antigüedad: 9 años, 9 meses
Puntos: 228
Respuesta: Pyfacebook

No entendi tu concepto de "navegar" si en definitiva no lo puedo hacer por el tema de las cookie!! Una vez que logre tener el codigo de fuente yo me encargo del resto....pero justamente fallo en este tema!!

Esto lo que estuvo probando pero tampoco va:

import urllib
import urllib2
import httplib2

url = 'http://www.comunidadargentina.net/foro/index.php?action=login2'
body = {'user':'000000', 'passwrd': '0000000'}
headers = {'Content-type': 'application/x-www-form-urlencoded'}


http = httplib2.Http()
response, content = http.request(url,'POST', headers=headers, body=urllib.urlencode(body))
headers['Cookie'] = response['set-cookie']


url = 'http://www.comunidadargentina.net/foro/index.php'
response, content = http.request(url, 'GET', headers=headers)
print content

Me aparece la pagina como si no me hubiese logueado.... y lo probe con la web de facebook y la pagina que me envia es la que dice que no estan activadas la cookie, asi que algo me esta faltando!

Última edición por sam90; 21/07/2010 a las 20:33
  #6 (permalink)  
Antiguo 22/07/2010, 09:49
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Pyfacebook

Primero que nada, no uses directamente httplib, usá urllib en su lugar (lo recomienda el manual: http://docs.python.org/library/httplib.html).

Usando urllib2, tenés que construir el 'opener' agregándole un 'processor' específico para manejar las cookies:
Código Python:
Ver original
  1. opener = urllib2.build_opener(urllib2.HTTPCookieProcessor)
Ya luego cualquier página que abras con ese 'opener' (opener.open())recibirá las cookies que hayan sido recibidas en una petición anterior.


Saludos.
  #7 (permalink)  
Antiguo 22/07/2010, 15:10
 
Fecha de Ingreso: abril-2010
Ubicación: Rosario
Mensajes: 1.850
Antigüedad: 9 años, 9 meses
Puntos: 228
Respuesta: Pyfacebook

Mira el codigo que me dices lo estuve probando pero no me funciono:

import urllib2, cookielib ,urllib

Código Python:
Ver original
  1. mycookie = cookielib.CookieJar()
  2. opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(mycookie))
  3. urllib2.install_opener(opener)
  4. login_data = urllib.urlencode({'email':'xxx', 'pass': 'xxxxx'})
  5. respuesta = opener.open('https://login.facebook.com/login.php?login_attempt=1', login_data)
  6. print(respuesta.read())

Despues encontre este codigo que me funciono con una pagina pero con facebook no...

Código Python:
Ver original
  1. import pycurl
  2. import urllib
  3.  
  4. url = 'http://www.comunidadargentina.net/foro/index.php?action=login2'
  5. post_vars =  {'user':'xxxxxxx', 'passwrd': 'lxxxxx'}  
  6.  
  7. c = pycurl.Curl()
  8. c.setopt(pycurl.URL, url)
  9. c.setopt(pycurl.POSTFIELDS, urllib.urlencode(post_vars))
  10. c.setopt(pycurl.COOKIEJAR, '/home/liquid/cookie.txt')
  11. c.setopt(pycurl.COOKIEFILE, '/home/liquid/cookie.txt')
  12. c.perform()
  13.  
  14. c.setopt(pycurl.URL, 'http://www.comunidadargentina.net/foro/index.php?action=unread')
  15. c.setopt(pycurl.COOKIEFILE, '/home/liquid/cookie.txt')
  16. c.perform()
  17.  
  18. c.close()

Probando con facebook en ambos codigo que devuelve la pagina que dice que no tengo las cookie habilitadas. Probe desactivarlas en cualquier explorador y el resoltado es el mismo.
En cambio el segundo codigo si me funcion para otra pagina. No se si tendra algun otra traba mas facebook.
  #8 (permalink)  
Antiguo 22/07/2010, 15:38
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Pyfacebook

No hace falta agregar el CookieJar ni nada de eso. Lo que hace falta es visitar antes www.facebook.com. Me di cuenta, viendo que la página de login te dice que le falta una cookie, de que podía ser una posibilidad.

Esto basta:

Código Python:
Ver original
  1. import urllib
  2. import urllib2
  3.  
  4. datos = urllib.urlencode({
  5.     'email' : 'tu_correo',
  6.     'pass' : 'tu_contrasenia'
  7. })
  8.  
  9. o = urllib2.build_opener(urllib2.HTTPCookieProcessor)
  10. o.open('https://www.facebook.com') # en este momento ya tenemos la cookie
  11. res = o.open('https://login.facebook.com/login.php?login_attempt=1', datos)
  12.  
  13. # listo, res contiene los datos de la página de inicio


Saludos.

Última edición por AlvaroG; 22/07/2010 a las 16:51
  #9 (permalink)  
Antiguo 22/07/2010, 15:59
 
Fecha de Ingreso: abril-2010
Ubicación: Rosario
Mensajes: 1.850
Antigüedad: 9 años, 9 meses
Puntos: 228
Respuesta: Pyfacebook

Gracias por tu ayuda. Ya me esta funcionando!!! Habia un truco destras de facebook despues de todo!!

Etiquetas: Ninguno
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 2 personas




La zona horaria es GMT -6. Ahora son las 10:40.