Google App Engineのサイト構築にDjangoフレームワークを利用する方法
詳細はここに書かれている
とりあえず、ヘルパーをダウンロードしてきて、後はデータストア周り以外は普通にDjangoでプログラムを書けばよいみたい?
2011年10月30日日曜日
2011年9月19日月曜日
MacへのOpenCVインストール
MacへOpenCVをインストール
Pythonから呼び出すため、Python 2.7とともにインストール
今回は、ソースコードからではなく、MacPortsを利用してインストール
(依存モジュールが多いため)
1.MacPortsのインストール
http://www.macports.org/からインストーラをダウンロードして、簡単にインストールできる
2.MacPortsでOpenCVをインストール
ターミナルを起動し、次のコマンドを実行すれば、インストールが開始する
# sudo port install opencv +python27
・MacPortsでインストール中にPerlがエラーを起こした
対策としては、activeなperl5.8をアンインストールして、最新のPerlだけにすればよい
手順は次の通り
1.インストールされているPerlを表示
これで、OpenCVのインストールを再会すればインストールできる
(インストールが完了するまでに、2時間ほどかかった・・・)
Pythonから呼び出すため、Python 2.7とともにインストール
今回は、ソースコードからではなく、MacPortsを利用してインストール
(依存モジュールが多いため)
1.MacPortsのインストール
http://www.macports.org/からインストーラをダウンロードして、簡単にインストールできる
2.MacPortsでOpenCVをインストール
ターミナルを起動し、次のコマンドを実行すれば、インストールが開始する
# sudo port install opencv +python27
・MacPortsでインストール中にPerlがエラーを起こした
Error: Target org.macports.activate returned: Image error: /opt/local/bin/a2p is being used by the active perl5.8 port. Please deactivate this port first, or use 'port -f activate perl5' to force the activation.エラー内にあるport -f activate perl5を実行しても、うまくいかなかった
対策としては、activeなperl5.8をアンインストールして、最新のPerlだけにすればよい
手順は次の通り
1.インストールされているPerlを表示
# sudo port installed | grep perl perl5 @5.8.9_0 perl5 @5.12.3_0+perl5_12 perl5.8 @5.8.9_3 (active) perl5.12 @5.12.3_1 (active)2.インストールされているPerlの中から、古いバージョンのものをアンインストール
# sudo port uninstall perl5 @5.8.9_0 # sudo port uninstall perl5.8
これで、OpenCVのインストールを再会すればインストールできる
(インストールが完了するまでに、2時間ほどかかった・・・)
2011年8月7日日曜日
HTTPレスポンスコードの取得
Pythonのurllib2を利用してWebサイトへアクセスしたときのHTTPレスポンスコードを利用するために、保存しておく方法
urllib2では、200以外はHTTPExceptionとなってしまうため、例外時の処理として書かなければならない
参考サイト:
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を取得するサンプル
Cookieが設定されている場合、cookielib.CookieJarオブジェクトとして取得できる
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を取得して、それを表示する簡単なサンプル
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を取得/表示することができる
2011年5月21日土曜日
Djangoのデータベースアクセス(その3)
テーブルのデータを取得する方法
1.データを取得する関数の作成
sampleprj/sampleapp/views.pyにshowという関数を作成し、次のようなコードを書く
2.URL割り当て
show関数を割り当てるURLを定義する
sampleprj/urls.pyの最後に次のコードを追加する
これでhttp://localhost:8000/sampleapp/show/にアクセスすると、コンソールにMemoテーブル内の全てのデータが表示される
参考サイト:
・クエリを生成する
1.データを取得する関数の作成
sampleprj/sampleapp/views.pyにshowという関数を作成し、次のようなコードを書く
# encoding: utf-8
from django.http import HttpResponse
from sampleprj.sampleapp.models import Memo
def show(request):
memos = Memo.objects.all()
for memo in memos:
print memo.userid
print memo.title
print memo.content
return HttpResponse('データを取得しました')
2.URL割り当て
show関数を割り当てるURLを定義する
sampleprj/urls.pyの最後に次のコードを追加する
urlpatterns += patterns('sampleprj.sampleapp',
url(r'^sampleapp/show/$', 'show'),
)
これでhttp://localhost:8000/sampleapp/show/にアクセスすると、コンソールにMemoテーブル内の全てのデータが表示される
参考サイト:
・クエリを生成する
2011年5月14日土曜日
Djangoのデータベースアクセス(その2)
新規データを追加する方法
ユーザが、http://localhost:8000/sampleapp/add/にアクセスした時に、前回作成したテーブルに新規にデータを追加する手順
1.アクセスする関数の作成
sampleprj/sampleapp/views.pyにaddという関数を作成し、次のようなコードを書く
2.URL割り当て
add関数を割り当てるURLを定義する
sampleprj/urls.pyの最後に次のコードを追加する
これでhttp://localhost:8000/sampleapp/add/にアクセスするとテーブルに追加される。
ユーザが、http://localhost:8000/sampleapp/add/にアクセスした時に、前回作成したテーブルに新規にデータを追加する手順
1.アクセスする関数の作成
sampleprj/sampleapp/views.pyにaddという関数を作成し、次のようなコードを書く
# encoding: utf-8
from django.http import HttpResponse
from sampleprj.sampleapp.models import Memo
def add(request):
memo = Memo()
memo.userid = 1
memo.title = 'first memo'
memo.content = 'memo content'
return HttpResponse('データを追加しました')
2.URL割り当て
add関数を割り当てるURLを定義する
sampleprj/urls.pyの最後に次のコードを追加する
urlpatterns += patterns('sampleprj.sampleapp',
url(r'^sampleapp/add/$', 'add'),
)
これでhttp://localhost:8000/sampleapp/add/にアクセスするとテーブルに追加される。
2011年5月7日土曜日
Djangoのデータベースアクセス(その1)
Djangoでデータベースへアクセスするためによく使う記述法のメモ
ここでは、まずテーブルを作成するまでの手順
次の例を利用する
プロジェクト名:sampleprj
アプリケーション名:sampleapp
テーブル名:Memo
データベースへのテーブル作成手順
1.モデルを定義
「sampleprj/sampleapp/models.py」に次のテーブル構成を追加
・userid:ユーザID、整数型
・title:タイトル、文字列型、最大100文字まで
・content:内容、文字列型、最大255文字まで
・created_date:作成日時、日時型、作成日時を自動設定
・updated_date:更新日時、日時型、更新日時を自動設定
models.py編集後に「# python manage.py syncdb」を実行することで、sampleapp_Memoというテーブルが作成される
参考サイト
・モデルフィールドリファレンス
ここでは、まずテーブルを作成するまでの手順
次の例を利用する
プロジェクト名:sampleprj
アプリケーション名:sampleapp
テーブル名:Memo
データベースへのテーブル作成手順
1.モデルを定義
「sampleprj/sampleapp/models.py」に次のテーブル構成を追加
from django.db import models
class Memo(models.Model):
userid = models.IntegerField()
title = models.CharField(max_length=100)
content = models.CharField(max_length=255)
created_date = models.DateTimeField(auto_now_add=True)
updated_date = models.DateTimeField(auto_now=True)
テーブルの構成は、次の通り・userid:ユーザID、整数型
・title:タイトル、文字列型、最大100文字まで
・content:内容、文字列型、最大255文字まで
・created_date:作成日時、日時型、作成日時を自動設定
・updated_date:更新日時、日時型、更新日時を自動設定
models.py編集後に「# python manage.py syncdb」を実行することで、sampleapp_Memoというテーブルが作成される
参考サイト
・モデルフィールドリファレンス
登録:
投稿 (Atom)