Hello Wor.log

IT系大学生4人による備忘録のようなもの

PGLのポケモンデータの取得

CPPXのP2です。

ポケモングローバルリンク(PGL)のデータ取得に関して書きます。

経緯

  • PGLに表示されていないデータ(31位以下の使用ランキングなど)が見たい。
  • PGL DATABASEなるサイトが現れる。
  • ということはデータは存在するはずだから、頑張れば見れるはず。
  • firefoxデバッグ機能でPGLを眺めてたらそれっぽいデータの送受信があった。
  • pythonで取得してみた。

ソースコード

import requests
from pprint import pprint

url = "https://3ds.pokemon-gl.com/frontendApi/gbu/getSeasonPokemonDetail"
headers = {
"Host": "3ds.pokemon-gl.com",
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64; rv:52.0) Gecko/20100101 Firefox/52.0",
"Accept": "*/*",
"Accept-Language": "ja,en-US;q=0.7,en;q=0.3",
"Accept-Encoding": "gzip, deflate, br",
"Content-Type": "application/x-www-form-urlencoded; charset=UTF-8",
"X-Requested-With": "XMLHttpRequest",
"Referer": "https://3ds.pokemon-gl.com/battle/",
"Content-Length": "287",
"Cookie": "site=1; language_id=1; region=0; _ga=GA1.2.580975419.1428913003; __ulfpc=201504131716426123; __utma=234147713.580975419.1428913003.1478879399.1479779450.3; __utmz=234147713.1478879399.2.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); s_fid=289F92E7E204472A-0769DD1F44BC4871; JSESSIONID=5F24620B34540182F0F1BC00A84A37CA; AWSELB=C95303410E583113FAF27D987FE57908F5BE8EE44B6EBF706FE32F03B8330D7D6AD01D27A6F20CC82C78B897C0BDF400DADB24277E7E8E3D98F717A77FD139BBF11516937C2B9D32F765752A4099B015B3E471B8C9; NO_MEMBER_DATA=%7B%22language_id%22%3A1%2C%22site%22%3A1%2C%22region%22%3A0%7D; s_cc=true; _gat=1",
"Connection": "keep-alive",
}

payload = {
    "languageId":1,
    "seasonId":203,
    "battleType":6,
    "timezone":"JST",
    "pokemonId":"59-0",
    "displayNumberWaza":10,
    "displayNumberTokusei":3,
    "displayNumberSeikaku":10,
    "displayNumberItem":10,
    "displayNumberLevel":10,
    "displayNumberPokemonIn":10,
    "displayNumberPokemonDown":10,
    "displayNumberPokemonDownWaza":10,
    "timeStamp":1490804393369
}
r = requests.post(url, headers=headers, data=payload)
pprint(r.json())

payloadのdisplayNumberやpokemonIdを変えるといろいろ取得できます。
取り急ぎ更新します。
後日追記修正(コードの説明とか)するかもです。