2011年8月7日日曜日

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

Pythonのurllib2を利用してWebサイトへアクセスしたときのHTTPレスポンスコードを利用するために、保存しておく方法
urllib2では、200以外はHTTPExceptionとなってしまうため、例外時の処理として書かなければならない
  1. import urllib2  
  2.   
  3. # HTTPレスポンスコードを格納する変数  
  4. http_code = 0  
  5. # アクセスするwebサイトのURL  
  6. url = 'http://www.yahoo.co.jp'  
  7.   
  8. try:  
  9.     # webサイトへアクセス  
  10.     web = urllib2.urlopen(url)  
  11.     # 成功した場合、この行以下も実行されるのでhttp_codeは200  
  12.     http_code = 200  
  13. except: HTTPError, e:  
  14.     http_code = e.code  
  15.   
  16. print http_code  
これで、正しくWebサイトにアクセスできたかを確認できる

参考サイト:


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

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

2011年8月6日土曜日

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

BeautifulSoupを利用してWebサイトのページ内にあるリンクをリストとして取得する方法
  1. import urllib2  
  2. from BeautifulSoup import BeautifulSoup  
  3.   
  4. if __name__ == '__main__':  
  5.     # アクセスするWebサイトのURL  
  6.     url = 'http://www.yahoo.co.jp/'  
  7.   
  8.     # Webサイトへアクセス  
  9.     web = urllib2.urlopen(url)  
  10.     # BeautifulSoupで解析できるよう読み込む  
  11.     html = BeautifulSoup(web)  
  12.   
  13.     # 'a'タグの全ての要素をリストとして抽出する  
  14.     base_linklist = self.getTagList('a')  
  15.     # 抽出した要素リストを1つずつ解析  
  16.     for link in base_linklist:  
  17.         # 'href'がタグ内に含まれない場合は無視する  
  18.         if link.__str__().find('href=') != -1:  
  19.             # リンク名:リンクURLと表示  
  20.             print link.string.__str__() + ':' + link['href']  
リンク名が画像などの場合、link.stringはNoneが得られるため、文字列に変換しておく必要がある

2011年8月5日金曜日

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

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

  1. import urllib2, cookielib  
  2. from BeautifulSoup import BeautifulSoup  
  3.   
  4. if __name__ == '__main__':  
  5.     # アクセスするWebサイトのURLを設定  
  6.     url = 'http://www.google.co.jp'  
  7.   
  8.     # Cookieを格納するオブジェクト  
  9.     cookie = cookielib.CookieJar()  
  10.     # Webサイトへアクセスするオブジェクト  
  11.     opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cookie))  
  12.     # Webサイトへアクセス  
  13.     web = opener.open(url)  
  14.     # BeautifulSoupで解析  
  15.     html = BeautifulSoup(web)  
  16.     # 取得したCookie内容を表示  
  17.     print cookie  
  18.     # 取得したHTML内容を表示  
  19.     print html.prettify()  

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

2011年8月3日水曜日

Pythonでスクレイピング

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

HTMLを取得して、それを表示する簡単なサンプル
  1. import urllib2  
  2. from BeautifulSoup import BeautifulSoup  
  3.   
  4. if __name__ == '__main__':  
  5.     web = urllib2.urlopen('http://www.google.co.jp/')  
  6.     html = BeautifulSoup(web)  
  7.     print html.prettify()  
これで、指定したWebサイトのHTMLを取得/表示することができる