Necesito acceder a algunas páginas HTML a través de un script de Python, el problema es que necesito la funcionalidad COOKIE, por lo tanto, una simple solicitud HTTP de urllib no funcionará.Simulación del navegador - Python
¿Alguna idea?
Necesito acceder a algunas páginas HTML a través de un script de Python, el problema es que necesito la funcionalidad COOKIE, por lo tanto, una simple solicitud HTTP de urllib no funcionará.Simulación del navegador - Python
¿Alguna idea?
la salida Mechanize. "Navegación web programática con estado en Python".
Maneja las cookies automágicamente.
import mechanize
br = mechanize.Browser()
resp = br.open("http://www.mysitewithcookies.com/")
print resp.info() # headers
print resp.read() # content
mecanizar también expone la API urllib2, con la administración de cookies activado por defecto.
Puede ser bastante lento, entonces YMMV. –
Gregg, ¿puedes explicarlo? básicamente es solo un contenedor alrededor de urllib2 –
@Gregg, ¿me lo explicas? : D – RadiantHex
Aquí hay algo que hace las cookies, y como un bono hace la autenticación para un sitio que requiere un nombre de usuario y contraseña.
import urllib2
import cookielib
import string
def cook():
url="http://wherever"
cj = cookielib.LWPCookieJar()
authinfo = urllib2.HTTPBasicAuthHandler()
realm="realmName"
username="userName"
password="passWord"
host="www.wherever.com"
authinfo.add_password(realm, host, username, password)
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj), authinfo)
urllib2.install_opener(opener)
# Create request object
txheaders = { 'User-agent' : "Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)" }
try:
req = urllib2.Request(url, None, txheaders)
cj.add_cookie_header(req)
f = urllib2.urlopen(req)
except IOError, e:
print "Failed to open", url
if hasattr(e, 'code'):
print "Error code:", e.code
else:
print f
print f.read()
print f.info()
f.close()
print 'Cookies:'
for index, cookie in enumerate(cj):
print index, " : ", cookie
cj.save("cookies.lwp")
@Mark: ¡muchas gracias! Esto funcionó a la perfección! – RadiantHex
tal vez debería aceptar la respuesta, RH, si esto funcionó para usted. –
El cookielib module proporciona la administración de cookies para los clientes HTTP.
El módulo cookielib define las clases para el manejo automático de cookies HTTP. Es útil para acceder a sitios web que requieren pequeñas porciones de datos (cookies) que se configurarán en la máquina cliente mediante una respuesta HTTP desde un servidor web, y luego se devolverán al servidor en solicitudes HTTP posteriores.
Los ejemplos en la serie doc cómo procesar las galletas en conjunto con urllib
:
import cookielib, urllib2
cj = cookielib.CookieJar()
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))
r = opener.open("http://example.com/")
¿Por qué no intenta Dryscrape para esto:
Import dryscrape as d
d.start_xvfb()
Br = d.Session()
Br.visit('http://URL.COM')
#open webpage
Br.at_xpath('//*[@id = "email"]').set('[email protected]')
#finding input by id
Br.at_xpath('//*[@id = "pass"]').set('pasword')
Br.at_xpath('//*[@id = "submit_button"]').click()
#put id of submit button and click it
No es necesario lib cookie para almacenar cookies sólo tiene que instalar Dryscrape y lo hace en su estilo
Varias implementaciones basadas en JavaScript de Python están disponibles (que pueden ejecutarse en un navegador web sin complementos adicionales). ¿Sería esto relevante? http://syntensity.com/static/python.html –