2011年8月7日日曜日

HTTPレスポンスコードの取得

Pythonのurllib2を利用してWebサイトへアクセスしたときのHTTPレスポンスコードを利用するために、保存しておく方法
urllib2では、200以外はHTTPExceptionとなってしまうため、例外時の処理として書かなければならない
import urllib2

# HTTPレスポンスコードを格納する変数
http_code = 0
# アクセスするwebサイトのURL
url = 'http://www.yahoo.co.jp'

try:
    # webサイトへアクセス
    web = urllib2.urlopen(url)
    # 成功した場合、この行以下も実行されるのでhttp_codeは200
    http_code = 200
except: HTTPError, e:
    http_code = e.code

print http_code
これで、正しくWebサイトにアクセスできたかを確認できる

参考サイト:


実行ファイルの親ディレクトリのパスを取得

Pythonでプログラムを実行しているファイルの親ディレクトリのパスを取得する方法
import os
parent_path = os.path.abspath(os.path.dirname(__file__))
print parent_path
例えば、/workspace/src/test.pyで実行した場合、parent_pathは'/workspace/src'となる

2011年8月6日土曜日

PythonでWebのリンクリスト取得

BeautifulSoupを利用してWebサイトのページ内にあるリンクをリストとして取得する方法
import urllib2
from BeautifulSoup import BeautifulSoup

if __name__ == '__main__':
    # アクセスするWebサイトのURL
    url = 'http://www.yahoo.co.jp/'

    # Webサイトへアクセス
    web = urllib2.urlopen(url)
    # BeautifulSoupで解析できるよう読み込む
    html = BeautifulSoup(web)

    # 'a'タグの全ての要素をリストとして抽出する
    base_linklist = self.getTagList('a')
    # 抽出した要素リストを1つずつ解析
    for link in base_linklist:
        # 'href'がタグ内に含まれない場合は無視する
        if link.__str__().find('href=') != -1:
            # リンク名:リンクURLと表示
            print link.string.__str__() + ':' + link['href']
リンク名が画像などの場合、link.stringはNoneが得られるため、文字列に変換しておく必要がある

2011年8月5日金曜日

Pythonでスクレイピング(Cookie取得)

urllib2とcookielibでWebサイトへアクセスしたときに、Cookieを取得するサンプル

import urllib2, cookielib
from BeautifulSoup import BeautifulSoup

if __name__ == '__main__':
    # アクセスするWebサイトのURLを設定
    url = 'http://www.google.co.jp'

    # Cookieを格納するオブジェクト
    cookie = cookielib.CookieJar()
    # Webサイトへアクセスするオブジェクト
    opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cookie))
    # Webサイトへアクセス
    web = opener.open(url)
    # BeautifulSoupで解析
    html = BeautifulSoup(web)
    # 取得したCookie内容を表示
    print cookie
    # 取得したHTML内容を表示
    print html.prettify()

Cookieが設定されている場合、cookielib.CookieJarオブジェクトとして取得できる

2011年8月3日水曜日

Pythonでスクレイピング

PythonでスクレイピングするライブラリとしてBeautifulSoupを利用

HTMLを取得して、それを表示する簡単なサンプル
import urllib2
from BeautifulSoup import BeautifulSoup

if __name__ == '__main__':
    web = urllib2.urlopen('http://www.google.co.jp/')
    html = BeautifulSoup(web)
    print html.prettify()
これで、指定したWebサイトのHTMLを取得/表示することができる