へっぽこびんぼう野郎のnewbie日記

けろけーろ(´・ω・`)! #vZkt8fc6J

Pythonでポケモンの種族値を取ってくるコード書いてみた。(Re正規表現)

 

ここからパクった!

参照元:(日々パソコンと Pythonで正規表現 メモ

 

#! /usr/bin/env python

#! -*- coding: utf-8 -*-

 

import urllib2

import re

 

url1 = urllib2.urlopen('http://www57.atwiki.jp/pokemon6th/pages/293.html').read()

 

name = re.findall(r'(?<=<!--1-.--><td style="text-align:center;">)\d+(?=</td>)', url1, re.UNICODE)

pname_b = re.findall(r'<h2.*(?=</h2>)' , url1, re.UNICODE)

pname = re.sub("<.*?>", "" ,pname_b[0])

 

print(pname)

print(name)

 

 

pname ↓

アーボック

name ↓

60 85 69 65 79 80 438


と表示される。

ポケモンXY(第六世代)・対戦考察まとめWikiアーボックのページ(293.html)から種族値を取ってくるコード。

H A B C D S 合計種族値の順に表示される。(合計種族値は表示されないページもある。)

 

やりたかったこと

  • ページ番号から掲載されている全ポケモンの名前を取得する。(できなかった><;)
  • 取得した全ポケモンとページ番号とを紐付けしたリストを作成。(取得できればTrueとかにすればたぶんすぐにできると思う)
  • ポケモンの名前を入力すると種族値やら技やらタイプが出力される。(上記のヤツの応用だから結構簡単にできそう)
  • 出力された種族値からLv50・個体値V・努力値0、255のときのステータス値を計算、出力。(ただの計算式なのでぶっちゃけ余裕だと思った)
  • いくつかのメジャーな技を繰り出したときの威力、繰り出されたときの防御力、ダメージを計算して出力。(たぶん簡単だけどめんどくさい)
  • これらをイイカンジのグラフィックで表示する(とても大変そうだけど楽しそう)
  • 実装できたらAndroidに移植してみる。(がんばる)

 

要は、

対戦中に『コイツすばやさの種族値いくつだっけ!?』

→即表示される

『このポケモンでコイツの10万ボルトって耐えれるのか? ドキドキ』

→「耐える確率17%、ダメージ幅160~180」

『このポケモンこんな技使ってきたけど、どういう型なんだよ…次どんな技使ってくるんだ…ググるの時間かかるし……』 ← おまけ

→「次技 10万ボルト:50%、かみなり:45%、めざめるパワー(雷):4%、ボルトチェンジ:1%」

みたいな便利なソフトにしたかった。

 

とりあえず繰り返し処理が難しい。

 

正規表現で困ったことたち↓

・・・<h2 id="asgyhg">てすと</h2>・・・

から『てすと』だけを抜き出す表現方法がよくわからなかった。

2行使って無理に抜き出してるけどなんとなくスマートではない気がする。

r'<h2.*(?=</h2>)' 

 こうすると『<h2 id="asgyhg">てすと』だけ抜き出される。

そこから

 re.sub("<.*?>"

 でタグを消しているだけ。なんとなくうまくできなくてモヤモヤ。

 

あと、『findall()』について。

findallって要はページ全体を検索するわけだから、ちょっと処理が遅くなる気がした。

目的のところまで来たら処理をエンドしてほしい。

どうやってやるのかよくわからない。

 

あと、僕が何度もサイトから情報取得したせいで多分考察サイトのアクセス数が結構増えた。

気にしないでください。

 

ググってる最中に見つけた便利そうな感じのサイト

  • python正規表現のパターンが書いてあるサイト(たぶん網羅してある。)

---------4.2.1 正規表現のシンタクス

  •  正規表現のメソッドが書かれてるサイト(若干見にくい気がする)

---------正規表現 HOWTO — Python 2.7ja1 documentation

  • HTMLのタグを除去する正規表現を書いてたブログ(わかりやすかった!)

---------Pythonの正規表現でHTMLタグを除去する方法 - 森薫の日記