2011-08-17 13 views
2

私は検索して検索しましたが、PHPに関連するソリューションとpython/djangoではないソリューションしか見つかりませんでした。私の目標は、ユーザーが文字列を入力できるようにするWebサイト(Pythonでコード化されたバックエンド)を作ることです。バックエンドスクリプトが実行され、いくつかの情報を含む辞書が出力されます。私が欲しいのは、辞書にある情報を使って、私がサーバ上に持っている画像に描画して、新しい画像をユーザに与えることです。今はオフラインでどうすればいいですか?どのライブラリを使用できますか?私が向かうルート上の提案は素敵です。Pythonでダイナミックなフォーラムシグネチャジェネレータを作成する

私はまだ初心者ですので、私のコードがうまくいく必要があるなら、私を許してください。これまでのところ、私は自分の目標を達成するためにどこに行くべきかわからないと言ったように、私は何を持っているのか間違いがない。どんなヒントも大歓迎です。

これは私が最終的な目標は、これは私がこれまでのところ(私はここから、パーサーとして美しいスープを使用したもの。これはあまりにも過剰である場合、または私はそれをしなかった場合であるhttp://combatarmshq.com/dynamic-signatures.html

になりたいものの一種であります。の名前http://combatarms.nexon.net/ClansRankings/PlayerProfile.aspx?user=

私は(これらは動的である)私が欲しいの番号を取得していますURLはこれです:より良い代替手段があるなら、私に教えてくださいおかげで)あまり良くない方法プレーヤーはユーザーの後に行くので、例はhttp://combatarms.nexon.net/ClansRankings/PlayerProfile.aspx?user=-aonbyte

です

これは、ウェブサイトをこすりするための基本的な機能を備えたコードです:

from urllib import urlopen 
from BeautifulSoup import BeautifulSoup 

def get_avatar(player_name): 
    '''Return the players avatar as a binary string.''' 
    player_name = str(player_name) 
    url = 'http://combat.nexon.net/Avatar/MyAvatar.srf?' 
    url += 'GameName=CombatArms&CharacterID=' + player_name 
    sock = urlopen(url) 
    data = sock.read() 
    sock.close() 
    return data 

def save_avatar(data, file_name): 
    '''Saves the avatar data from get_avatar() in png format.''' 
    local_file = open(file_name + '.png', 'w' + 'b') 
    local_file.write(data) 
    local_file.close() 

def get_basic_info(player_name): 
    '''Returns basic player statistics as a dictionary''' 
    url = 'http://combatarms.nexon.net/ClansRankings' 
    url += '/PlayerProfile.aspx?user=' + player_name 
    sock = urlopen(url) 
    html_raw = sock.read() 
    sock.close() 
    html_original_parse = BeautifulSoup(''.join(html_raw)) 
    player_info = html_original_parse.find('div', 'info').find('ul') 
    basic_info_list = range(6) 
    for i in basic_info_list: 
     basic_info_list[i] = str(player_info('li', limit = 7)[i+1].contents[1]) 
    basic_info = dict(date = basic_info_list[0], rank = basic_info_list[1], kdr = basic_info_list[2], exp = basic_info_list[3], gp_earned = basic_info_list[4], gp_current = basic_info_list[5]) 
    return basic_info 

そして、ここではそれらの機能をテストするコードです:

from grabber import get_avatar, save_avatar, get_basic_info 

player = raw_input('Player name: ') 
print 'Downloading avatar...' 
avatar_data = get_avatar(player) 
file_name = raw_input('Save as? ') 
print 'Saving avatar as ' + file_name + '.png...' 
save_avatar(avatar_data, file_name) 
print 'Retrieving ' + player + '\'s basic character info...' 
player_info = get_basic_info(player) 
print '' 
print '' 
print 'Info for character named ' + player + ':' 
print 'Character creation date: ' + player_info['date'] 
print 'Rank: ' + player_info['rank'] 
print 'Experience: ' + player_info['exp'] 
print 'KDR: ' + player_info['kdr'] 
print 'Current GP: ' + player_info['gp_current'] 
print '' 
raw_input('Press enter to close...') 
+0

リンクが壊れています – seriyPS

+0

リンクを修正しました。申し訳ありません。私は何が起こったのか分からない。 – aonbyte

答えて

3

私が正しくあなたを理解していれば、あなたがしたいですある場所から画像を取得し、別の場所からテキスト情報を取得し、画像の上にのテキストを描画し、マークアップした画像を返します。私はその権利を持っていますか?

もしそうなら、PIL、Python Image Libraryを入手してください。 PILとBeatifulSoupはともに開かれたURLから直接読むことができるので、あなたはそのソケットのナンセンスを忘れることができます。 HTTPリクエストからプレーヤー名を取得し、画像を開き、BeautifulSoupを使用してデータを取得し、PILのテキスト関数を使用して画像に書き込んだり、画像をHTTPレスポンスに保存したりすることができます。

+0

ありがとうございます!高く評価。 – aonbyte

関連する問題