我想從python程序訪問網頁。 我必須設置Cookie來加載頁面。
我用httplib2的庫,但我沒有找到如何添加自己的cookiePython創建Cookie,然後使用Cookie加載頁面
resp_headers, content = h.request("http://www.theURL.com", "GET")
如何創建與正確的名稱和值的cookie,將它添加到函數,然後加載頁面?
感謝
我想從python程序訪問網頁。 我必須設置Cookie來加載頁面。
我用httplib2的庫,但我沒有找到如何添加自己的cookiePython創建Cookie,然後使用Cookie加載頁面
resp_headers, content = h.request("http://www.theURL.com", "GET")
如何創建與正確的名稱和值的cookie,將它添加到函數,然後加載頁面?
感謝
http = httplib2.Http()
# get cookie_value here
headers = {'Cookie':cookie_value}
response, content = http.request("http://www.theURL.com", 'GET', headers=headers)
您可能需要添加另一個頭參數指定其他HTTP請求參數。
從http://code.google.com/p/httplib2/wiki/Examples希望能幫助)
餅乾
當自動化的東西,你經常需要「登錄」保持某種形式的會話/狀態與服務器。有時候,這是通過基於表單的身份驗證和cookie實現的。您將表單發佈到服務器,並在傳入的HTTP標頭中使用cookie進行響應。您需要在隨後的請求中將此cookie傳回服務器以維護狀態或保持會話存活。
這是一個如何處理您的HTTP POST時處理cookie的例子。
首先,讓我們導入我們將使用模塊:
import urllib import httplib2
現在,讓我們定義將需要的數據。在這種情況下,我們正在使用表示用戶名和密碼的2個字段進行表單發佈。
url = 'http://www.example.com/login' body = {'USERNAME': 'foo', 'PASSWORD': 'bar'} headers = {'Content-type': 'application/x-www-form-urlencoded'}
現在我們可以發送HTTP請求:
http = httplib2.Http() response, content = http.request(url, 'POST', headers=headers, body=urllib.urlencode(body))
在這一點上,我們的「反應」變量包含由服務器返回的HTTP報頭字段的字典。如果返回cookie,您將看到包含cookie值的「set-cookie」字段。我們希望把這個值,放入傳出HTTP標頭爲我們的後續請求:
headers['Cookie'] = response['set-cookie']
現在我們可以使用這個頭髮送一個請求,它將包含餅乾,所以服務器可以識別我們。
所以......這是一個腳本中的全部內容。我們登錄到網站,然後讓使用我們收到的cookie的另一個請求:
#!/usr/bin/env python import urllib import httplib2 http = httplib2.Http() url = 'http://www.example.com/login' body = {'USERNAME': 'foo', 'PASSWORD': 'bar'} headers = {'Content-type': 'application/x-www-form-urlencoded'} response, content = http.request(url, 'POST', headers=headers, body=urllib.urlencode(body)) headers = {'Cookie': response['set-cookie']} url = 'http://www.example.com/home' response, content = http.request(url, 'GET', headers=headers)
您也可以只使用的urllib2庫
import urllib2
opener = urllib2.build_opener()
opener.addheaders.append(('Cookie', 'cookie1=value1;cookie2=value2'))
f = opener.open("http://www.example.com/")
the_page_html = f.read()