Python 在Selenium中使用urllib2 cookie

Python 在Selenium中使用urllib2 cookie,python,selenium,beautifulsoup,urllib2,Python,Selenium,Beautifulsoup,Urllib2,我正在努力与一个网站进行互动。使用BeautifulSoup,我可以做我想做的大部分事情,但不是全部。硒应该能够处理这部分。我可以使用Selenium Firefox插件让它工作。我现在只需要把它自动化。我的问题是,我需要与之交互的区域位于登录提示符后面,登录提示符是通过OpenID提供程序处理的 幸运的是,我能够使用这个bookmarklet来获取设置好的cookiejavascript:void(document.cookie=prompt(document.cookie,document.

我正在努力与一个网站进行互动。使用BeautifulSoup,我可以做我想做的大部分事情,但不是全部。硒应该能够处理这部分。我可以使用Selenium Firefox插件让它工作。我现在只需要把它自动化。我的问题是,我需要与之交互的区域位于登录提示符后面,登录提示符是通过OpenID提供程序处理的

幸运的是,我能够使用这个bookmarklet来获取设置好的cookie<代码>javascript:void(document.cookie=prompt(document.cookie,document.cookie))这允许我使用BeautifulSoup登录并解析页面

这是通过以下代码完成的:

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...

但是,因为
jar
是空的,所以这不起作用。有没有办法把饼干放进罐子里?因为我使用这个cookie绕过了OpenId登录,所以我没有从服务器收到任何反馈。

我想你可能是在倒退。与其将cookie传递给Selenium,为什么不直接使用Selenium执行登录

例如:

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()
这样,您就不必担心手动收集cookie

从这里,您可以获取页面源并将其传递给BeautifulSoup:

source = browser.page_source
soup = BeautifulSoup(source)

我希望这有帮助。

为什么不使用Selenium并直接登录?使用
send_keys()
将适当的登录凭据写入适当的元素,然后发送表单。它不那么凌乱。
source = browser.page_source
soup = BeautifulSoup(source)