python - examples - Use la cookie urllib2 en selenio
selenium python (1)
Creo que podrías acercarte hacia atrás. En lugar de pasar una cookie a Selenium, ¿por qué no realizar el inicio de sesión con Selenium directamente?
Por ejemplo:
browser = webdriver.Firefox()
username = ''myusername''
password = ''mypassword''
browser.get(''http://www.mywebsite.com/'')
username_input = browser.find_element_by_id(''username'') #Using id only as an example
password_input = browser.find_element_by_id(''password'')
login_button = browser.find_element_by_id(''login'')
username_input.send_keys(username)
password_input.send_keys(password)
login_button.click()
De esta forma, no tendrá que preocuparse por la recopilación manual de cookies.
Desde aquí, puede tomar el origen de la página y pasarlo a BeautifulSoup:
source = browser.page_source
soup = BeautifulSoup(source)
Espero que esto haya ayudado.
Estoy tratando de raspar e interactuar con un sitio. Usando BeautifulSoup, puedo hacer MÁS de lo que quiero, pero no todo. El selenio debería poder manejar esa porción. Puedo hacer que funcione con el complemento Selenium Firefox. Solo necesito automatizarlo ahora. Mi problema es que el área con la que necesito interactuar se encuentra detrás de un mensaje de inicio de sesión, que se maneja a través de un proveedor de OpenID.
Afortunadamente, pude utilizar este bookmarklet para obtener la cookie que está configurada. javascript:void(document.cookie=prompt(document.cookie,document.cookie));
Esto me permite iniciar sesión y analizar la página usando BeautifulSoup.
Esto se hace a través de este código:
jar = cookielib.FileCookieJar("cookies")
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(jar))
opener.addheaders.append(("Cookie","__cfduid=<hex string>; __utma=59652655.1231969161.1367166137.1368651910.1368660971.15; __utmz=59652655.1367166137.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); PHPSESSID=<a session id>; __utmb=59652655.1.10.1368660971; __utmc=59652655"))
page = opener.open(url).read()
soup = BeautifulSoup(scrap1)
...parse stuff...
En este punto, el jar
está vacío y necesito hacer la interacción final (haciendo clic en un par de elementos DIV y verificando que otro DIV se ha actualizado apropiadamente. Sin embargo, necesito que el archivo cookie anterior se rellene en una sesión de selenio para que yo pueda estoy conectado apropiadamente.
¿Cómo puedo mover la cookie anterior a algo que el selenio conoce y reconoce?
He intentado código como este
for c in jar:
driver.add_cookie({''name'':c.name, ''value'':c.value, ''path'':''/'', ''domain'':c.domain})
Pero, dado que el jar
está vacío, esto no funciona. ¿Hay alguna manera de poner esta galleta en el frasco? Como evito el inicio de sesión de OpenId con esta cookie, no recibo nada del servidor.