2010-12-03 9 views
2


私はPythonプログラムからWebページにアクセスしたいと思います。 ページを読み込むためにクッキーを設定する必要があります。
私はhttplib2ライブラリを使用しますが、私は、私自身のクッキーPythonでクッキーを作成し、クッキーでページをロードする

resp_headers, content = h.request("http://www.theURL.com", "GET") 

がどのように右の名前と値を持つクッキーを作成することができる追加機能に追加してからページをロードする方法見つけられませんでしたか?
おかげで希望が役立ちますhttp://code.google.com/p/httplib2/wiki/Examplesから

答えて

5
http = httplib2.Http() 
# get cookie_value here 
headers = {'Cookie':cookie_value} 
response, content = http.request("http://www.theURL.com", 'GET', headers=headers) 

あなたは別のHTTPリクエストパラメータを指定するには、別のヘッダパラメータを追加することもできます。

11

クッキー

何かを自動化する

は、あなたは、多くの場合、「ログイン」するために、サーバとのセッション/状態のいくつかの並べ替えを維持する必要があります。これは、フォームベースの認証とCookieで実現されることもあります。サーバーにフォームを送信すると、受信HTTPヘッダーのCookieが返されます。その後の状態の維持やセッションを維持するために、このクッキーをサーバーに戻す必要があります。

ここでは、HTTPポストを行う際にクッキーを処理する方法の例を示します。

 
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ヘッダフィールドの辞書が含まれています。クッキーが返された場合は、クッキー値を含む "set-cookie"フィールドが表示されます。私たちは、この値を取り、私たちのその後の要求のための発信HTTPヘッダーに入れたい:

 
headers['Cookie'] = response['set-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) 
0

また、単に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() 
関連する問題