Regen Techlog

Web・プログラミングの技術メモ

browsercookiejar: ブラウザのCookieをPythonから利用する

      2017/07/02

ウェブスクレイピングの記事を書きましたが、ログインが必要なページから情報を取得するには一工夫する必要があります。

ウェブページでログインしてコンテンツを切り替える場合はCookieが使われます。ウェブサービスにログインするとサーバーからセッションIDが送られてきて、ブラウザがそれをCookieに保存し、新たなページを開くたびにセッションIDをサーバーへ送信しています。サーバーはブラウザが送ってきたセッションIDでログインしたユーザーかどうか判断しています。

PythonにもCookieを扱う機能は含まれており、cookielibモジュールがCookieを保存する機能を担っています。CookieJarをセットしてurllib2モジュールなどを使ってログインした後に必要なページにアクセスすればログインした状態でダウンロードできます。

ただし、ログインするプロセスをPythonでもしっかり再現しなくてはなりません。ユーザー名・パスワードをPOSTで投げるだけでログインできるシステムは比較的簡単ですが、ネットバンキングなどログイン手順が複雑なものや同時ログイン数が制限されているシステムなどでは不便です。そこで、ブラウザが保存しているCookieをPythonから読み込み、セッションIDが入手できればスクレイピングがはるかに簡単になります。

というわけで、browsercookiejarというパッケージを作りました。Windows/Linux環境下のChrome、Firefox、InternetExplorerに対応したCookieJarを含んでいます。Macはテストできる環境がないので対応していません。

使用例は以下のようになります。

import re
import urllib2
import browsercookiejar

cj = browsercookiejar.ChromeCookieJar()
cj.load()
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))
body = opener.open('http://www.google.com').read()
account = re.search(r'>([^>]+@gmail.com)', body).group(1)

print 'Your account is', account

この例ではChromeのCookieを読み込んでGoogleにアクセスし、ログイン中のアカウント名を取得しています。

 - プログラミング

コメントを残す

  関連記事

Python小ネタ

Pythonの意外と知られていない小ネタを紹介します。

Pythonで簡単にWindowsサービスを作る

Pythonで書いた処理をバックグラウンドで動かしておきたいときに、Window …

THETA画像のEXIF読み取りと傾き補正

最近一部で話題のTHETA(ワンショット全球パノラマカメラ)ですが,THETAを …

Suspend on LAN

ネットワークに接続されたPCを遠隔で起動する技術にWake on LAN(WoL …

lxmlでスクレイピングするときのコツ

PythonでスクレイピングをしようとするとBeautifulSoup4やlxm …

「Unable to find vcvarsall.bat」の対処法

C/C++などのビルドが必要なファイルを含むPythonパッケージをWindow …

SourceTreeのGit-Flowで必ずno-ffする

GUIでGit操作ができるクライアントの一つSourceTreeですが、Git- …

子テーマでサイドバーを最後に追加する

WordPressでテーマをカスタマイズする場合は子テーマを使うのが一般的ですが …

WindowsでPython Netifacesをインストールする

Pythonでマジックパケットを監視してみようと思ってプログラムを書いていたので …

VC++9.0でOpenMP使用時の注意点

OpenMPを使ったCライブラリをPythonで使うためにPython本体のバー …