2014-06-11 170 views
4

我一直在嘗試登錄到http://www.qualtrics.com/login/,然後保存一個cookie文件,但它不起作用。用Python登錄網站

opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cookie_jar)) 
opener.addheaders =[('Referer', 'http://www.qualtrics.com'), 
('User-Agent','Mozilla/5.0 (Windows NT 6.1; rv:26.0) Gecko/20100101 Firefox/26.0'), 
         ('Content-Type','application/x-www-form-urlencoded')] 
url = 'http://www.qualtrics.com/login/' 
data = {'method' : '1', 'login' : 'my-username', 'password' : 'my-password'} 
req = urllib2.Request(url, urllib.urlencode(data)) 
res = opener.open(req) 

但是,反應是沒有帳戶的人會看到(它不工作)。 有什麼幫助嗎?此外,餅乾的文件應該是這樣的:

# Netscape HTTP Cookie File 
# http://www.netscape.com/newsref/std/cookie_spec.html 
# This is a generated file! Do not edit. 
value/value/value etc 

回答

4

雖然這看起來有點寬泛不會selenium爲您提供一個良好的基礎,從啓動。有很多很好的例子可供參考。從this example

from selenium import webdriver 
browser = webdriver.Firefox() 
browser.get('http://www.example.com') 
browser.find_element_by_name('username').send_keys('myusername') 
browser.find_element_by_name('password').send_keys('mypassword') 
browser.find_element_by_class_name('welcomeLoginButton').click() 
cookies = browser.get_cookies() 

竊取您可能需要擺在那裏等待的一些聲明,但也有很多的例子在這裏堆棧溢出和大量的信息in the docs

編輯: 固定鏈接文檔。

  • find_element_by_name可以找到here
  • 有關cookie的更多信息可以參考here。在這個例子中,cookies對象只是{name:value}的一個字典
+0

嗯,我不知道這會對我有用。它是否將cookie保存在文件中?我需要在登錄後向網站發佈其他內容。我不知道我是否解釋得很好。 –

+0

@Slick這是很有趣的地方,我可以在哪裏找到「find_element_by_name」和這個主API似乎沒有列出這些文檔。 – t3dodson

+0

@TommyDDD鏈接現在應該被修復。 – Slick

2

有一個有趣的庫叫mechanize。它不是最新的,但它工作正常。

你會是這樣的:

import mechanize 

browser = mechanize.Browser() 
browser.open("http://www.example.com") 
browser.select_form(name="myform") 
browser["username"] = "username" 
browser["password"] = "password" 
browser.submit() 

它爲您完成所有的餅乾自動化(儘管你可以重寫該行爲)。您還可能需要添加標題(引用者,用戶代理等)。

庫,請訪問:http://wwwsearch.sourceforge.net/mechanize/

編輯:他們(當然差)文檔還解釋瞭如何可以保存/操縱餅乾。