2016-06-30 15 views
0

私はハイスコアのためにrunescape APIを使用しています。このAPIデータを使用してリストを作成するにはどうすればよいですか?

私は...罰金が、イムは、特定の数に選択し、この番号を印刷する方法を把握しようとしているAPIから戻ってすべての私の統計情報の取得しています

例えば数(2422)

import urllib3 
from bs4 import BeautifulSoup 
import requests 

url = ("http://services.runescape.com/m=hiscore/index_lite.ws?player=Auz") 
r = requests.get(url) 

soup = BeautifulSoup(r.content, "html.parser") 

print(soup) 

出力:

99250,2422,387973429 
88601,99,16385311 
80539,99,18028072 
49262,99,23912868 
88752,99,27170883 
67921,99,20627320 
143681,96,9925614 
77482,99,18671068 
149914,99,13203953 
237810,90,5544748 
211398,90,5395751 
252644,82,2629556 
204600,92,7009182 
119036,90,5742116 
131195,90,5640895 
123789,90,5847081 
59633,99,14385749 
98898,90,5589126 
110857,86,3907880 
209196,86,3709666 
106292,88,4618632 
112823,90,5356757 
123689,84,3237408 
84926,92,7156796 
140533,93,7410104 
10777,120,144782643 
142316,80,2084250 
-1,0,-1 
-1,-1 
-1,-1 
49676,1810553 
-1,-1 

私はスープをプリントアウトしようとした[2]しかし、私は1つだけの数ではなく、全体を取り戻します。

これはチャットボットim不一致です。

+0

BeautifulSoupはまったく必要ない場合があります。データはコンマでトークン化された行になります。テキストを分割してリストを取得するだけです。 – kosgeinsky

答えて

2

APIのように、の形式で「1行に3つのカンマ区切り番号」のデータが返されます。したがって、あなただけの応答を得るためにr.textを使用することがあります。

In [14]: r.text 
Out[14]: '99245,2422,387973429\n88599,99,16385311\n80538,99,18028072\n49262,99,23912868\n88753,99,27170883\n67922,99,20627320\n143675,96,9925614\n77481,99,18671068\n149905,99,13203953\n237783,90,5544748\n211377,90,5395751\n252625,82,2629556\n204586,92,7009182\n119029,90,5742116\n131186,90,5640895\n123782,90,5847081\n59632,99,14385749\n98893,90,5589126\n110850,86,3907880\n209187,86,3709666\n106286,88,4618632\n112818,90,5356757\n123683,84,3237408\n84921,92,7156796\n140528,93,7410104\n10777,120,144782643\n142309,80,2084250\n-1,0,-1\n-1,-1\n-1,-1\n49672,1810553\n-1,-1\n-1,-1\n-1,-1\n-1,-1\n122488,577\n181483,503\n-1,-1\n8478,318\n-1,-1\n-1,-1\n50501,274\n101370,544\n27126,1032671\n-1,-1\n13441,15\n-1,-1\n-1,-1\n-1,-1\n56488,39\n-1,-1\n-1,-1\n' 

次に、あなたの行に応答を分割することもできます。コンマで行を分割

In [15]: r.text.split()[0] 
Out[15]: '99245,2422,387973429' 

は、あなたが取得することができます特定の値:あなたはまた、簡単にリストの内包表記を使用して行うことができる番号のリスト、への応答を変換したい場合があり

In [16]: r.text.split()[0].split(',')[1] 
Out[16]: '2422' 

In [17]: scores = [[int(x) for x in row.split(',')] for row in r.text.split()] 

In [18]: scores[0][1] 
Out[18]: 2422 

In [19]: scores 
Out[19]: 
[[99245, 2422, 387973429], 
[88599, 99, 16385311], 
[80538, 99, 18028072], 
[49262, 99, 23912868], 
[88753, 99, 27170883], 
[67922, 99, 20627320], 
[143675, 96, 9925614], 
[77481, 99, 18671068], 
[149905, 99, 13203953], 
[237783, 90, 5544748], 
[211377, 90, 5395751], 
[252625, 82, 2629556], 
[204586, 92, 7009182], 
[119029, 90, 5742116], 
[131186, 90, 5640895], 
[123782, 90, 5847081], 
[59632, 99, 14385749], 
[98893, 90, 5589126], 
[110850, 86, 3907880], 
[209187, 86, 3709666], 
[106286, 88, 4618632], 
[112818, 90, 5356757], 
[123683, 84, 3237408], 
[84921, 92, 7156796], 
[140528, 93, 7410104], 
[10777, 120, 144782643], 
[142309, 80, 2084250], 
[-1, 0, -1], 
[-1, -1], 
[-1, -1], 
[49672, 1810553], 
[-1, -1], 
[-1, -1], 
[-1, -1], 
[-1, -1], 
[122488, 577], 
[181483, 503], 
[-1, -1], 
[8478, 318], 
[-1, -1], 
[-1, -1], 
[50501, 274], 
[101370, 544], 
[27126, 1032671], 
[-1, -1], 
[13441, 15], 
[-1, -1], 
[-1, -1], 
[-1, -1], 
[56488, 39], 
[-1, -1], 
[-1, -1]] 
+0

うわー、ありがとう。この行について説明して、何が起こっているのか十分に理解できますか? [16]:r.text.split()[0] .split( '、')[1] –

+0

この行は、最初に応答テキストを改行(より正確には空白文字)で分割します。 'split()'は行のリストを返し、 '[0]'表記を使って最初の行を取り出します。 'split( '、')'は最初の行をコンマで区切り、 '[1]'はリストから2番目の要素を返します。 – soon

+0

ありがとうございました。 –

関連する問題