CONTENTS コンテンツ

ポケモン図鑑の説明文を生成しよう!(7)

生成AIを使おう!

2024.06.14

 生成AIで架空のポケモンを作るためのデータベースを作っています。データベースを作成するコードを書かせ、前回から読解していたところ。今回はその続き。

入力:

以下のコメントに記載した、コードの説明文の誤りを直してください
#テーブルの行(row)ごとに
for row in table_rows:
#変数「columns」にその行で見つけたタグをすべて格納する。columnsは配列になる。tdタグを探す意味が分からない
columns = row.find_all(‘td’)
#if条件が差す内容が不明
if columns and columns[0].text.strip() in valid_numbers:
#変数「link」にcolumns配列1番地で見つかったaタグを格納する
link = columns[1].find(‘a’)

 こんな感じでわからないものはわからないと述べながらわかる部分だけ書いていく。結果赤ペンがついたのが以下の5点。

出力:

修正点の要約

  1. columns変数の説明: <td>タグはテーブルのセルを意味し、各行(<tr>)の中のセル(列)をリストに格納します。
  2. if条件の説明: columnsが存在し、1列目のテキストがvalid_numbersに含まれる場合に処理を行う。
  3. link変数の説明: columnsリストの1番目のセル内の<a>タグを取得します。
  4. strip=Trueの説明: get_text(strip=True)はテキストの前後の空白を削除します。
  5. c.executeの説明: SQL文を実行して、特定の条件に一致する行を検索またはデータを挿入します。
  6. c.fetchoneの説明: SQLクエリの結果から1行を取得し、結果がなければNoneを返します。

これで、各部分の説明がより明確になりました。

 1はHTMLのテーブル構造を知らなかったため。Progateではテーブル扱わなかったな。webデザイン向けの講座だったので、データベース系はノータッチだった。
 2はvalid_numbersの変数の意味を忘れていたため。コードの上の方で定義してた。単なるミス。
 3は「(テーブルのセル内の)aタグ」というaタグへの限定条件が抜けていた。原因は1と同じ。
 4はget_text(strip=True)を知らなかったのが原因。あとコードのstrip=Trueは外した方が良いな。
 5,6はSQLを全く触ってないため知らなかった。

 こんな感じで、修正された理由をたどり、原因分析できる。今回はHTMLテーブル構造、SQLの知識不足が露呈した。次は先に進むかこの辺勉強するか。

次回に続く

この記事をシェアする