さらなる下準備

SQLiteの進捗

1,文字コード変換

Ubuntu文字コードを確認する。

nfk -g poke.csv

>SHIFT-JIS

と出たので、UTFに変換。

nfk -w poke.csv > hoge.csv

これでUTFのcsvファイルができたのでインポートできる。

(H.Mさんに教えてもらいました。ありがとうございます。)

 

2,インポート

> sqlite3 test.db

sqlite >> .separator ,  //区切りを,に設定

sqlite >> .import hoge.csv POKE  //POKEというテーブルに保存

sqlite >> select * from POKE

ですべてのデータが出ることを確認!

 

しかし、新しい問題:データの検索がうまくいかない

たとえば、リザードンのデータが欲しいとき

select * from POKE where name = "リザードン"

とすると、検索結果が出ない。(何もヒットしない)結果に。

 

いろいろ調べた結果、データ型を確認してみると

>> .schema

それぞれのデータ型がみんなtextになっていた!

これはまずいので、データ型変換方法を調べ、やってみる。

まずは、もう一つテーブルを作成

create table temp(

id integer,

name text,

......

attack integer);

そして、既存のテーブルの内容を移す

>> insert into temp select * from POKE;

これで自分のやりたいような検索が可能になった!

 

無事にC#でも動作を確認。

 

ポケモンのデータを読み取って満足したところで、

わざのデータをデータベースにする必要があることに気づく。

そして、このcsvは自分でつくるしかないのか...

これはWebからデータを取り出していくしかない。

 

3,スクレイピング

Pythonでやってみよう。

qiita.com

このサイトで基礎をやったあと、少しコードを変えることで技名を取得することに成功。

import urllib2
from bs4 import BeautifulSoup
html = urllib2.urlopen(url)
soup = BeautifulSoup(html, "html.parser")
 
tr = soup.find_all("tr")
 
names = []
 
for tag in tr:
try:
string_ = tag.get("class").pop(0)
 
if string_ in "c1":
names.append(tag.td.string)
except:
pass
for name in names:
print(name)
 
次はわざの攻撃力、タイプの取得。
beautifulsoupの使い方をまだ習得していないので、次から調べていこう。