質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

811閲覧

BeautifulSoupを使ったデータ抽出について

makamaka

総合スコア21

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2021/10/01 14:01

前提・実現したいこと

次のHTMLからポケモン1~4と、ポケモンの名前を抜き取るプログラムを作りたいと考えています。
最終的には
ポケモン1:アチャモ
ポケモン2:ワカシャモ
ポケモン3:バシャーモ
ポケモン4:ミズゴロウ

と自動で出力されるようにしたいです。
下記コードのpokemonnames[0]がうまくいかない原因であると思いますが、うまく抽出する方法がわかりません。
ちなみにbeautifulsoupを使っています。
現在のコードではうまく抽出できていないため、やり方をご教授ください。

<table class="table table-striped table-list-view ipo-history-list" style="position: relative;"><tbody><tr data-symbol=""><td class="symbol-code-cell">6523</td><td class="symbol-cell"><div><div class="symbol-name">ポケモン1</div></div></td><td class="winner-result-cell">アチャモ</td><td class="application-time-cell date-cell">2021/09/28 20:04</td><td class="winner-time-cell date-cell">-</td><td class="winner-buy-period-cell date-cell"><div><div><!-- react-text: 871 -->開始:<!-- /react-text --><!-- react-text: 872 -->10月7日(木) 09時00分<!-- /react-text --></div><div><!-- react-text: 874 -->終了:<!-- /react-text --><!-- react-text: 875 -->10月11日(月) 08時59分<!-- /react-text --></div></div></td><td class="spare-buy-period-cell date-cell"><div><div><!-- react-text: 879 -->開始:<!-- /react-text --><!-- react-text: 880 -->10月11日(月) 09時00分<!-- /react-text --></div><div><!-- react-text: 882 -->終了:<!-- /react-text --><!-- react-text: 883 -->10月12日(火) 15時30分<!-- /react-text --></div></div></td><td class="update-time-cell date-cell">2021/09/29 12:11</td><td class="stretch-cell"></td></tr><tr data-symbol=""><td class="symbol-code-cell">7371</td><td class="symbol-cell"><div><div class="symbol-name">ポケモン2</div></div></td><td class="winner-result-cell">ワカシャモ</td><td class="application-time-cell date-cell">2021/05/25 19:34</td><td class="winner-time-cell date-cell">-</td><td class="winner-buy-period-cell date-cell"><div><div><!-- react-text: 897 -->開始:<!-- /react-text --><!-- react-text: 898 -->6月8日(火) 09時00分<!-- /react-text --></div><div><!-- react-text: 900 -->終了:<!-- /react-text --><!-- react-text: 901 -->6月10日(木) 08時59分<!-- /react-text --></div></div></td><td class="spare-buy-period-cell date-cell"><div><div><!-- react-text: 905 -->開始:<!-- /react-text --><!-- react-text: 906 -->6月10日(木) 09時00分<!-- /react-text --></div><div><!-- react-text: 908 -->終了:<!-- /react-text --><!-- react-text: 909 -->6月11日(金) 15時30分<!-- /react-text --></div></div></td><td class="update-time-cell date-cell">2021/06/07 16:19</td><td class="stretch-cell"></td></tr><tr data-symbol=""><td class="symbol-code-cell">4198</td><td class="symbol-cell"><div><div class="symbol-name">ポケモン3</div></div></td><td class="winner-result-cell">バシャーモ</td><td class="application-time-cell date-cell">2021/05/21 07:17</td><td class="winner-time-cell date-cell">-</td><td class="winner-buy-period-cell date-cell"><div><div><!-- react-text: 923 -->開始:<!-- /react-text --><!-- react-text: 924 -->6月2日(水) 09時00分<!-- /react-text --></div><div><!-- react-text: 926 -->終了:<!-- /react-text --><!-- react-text: 927 -->6月4日(金) 08時59分<!-- /react-text --></div></div></td><td class="spare-buy-period-cell date-cell"><div><div><!-- react-text: 931 -->開始:<!-- /react-text --><!-- react-text: 932 -->6月4日(金) 09時00分<!-- /react-text --></div><div><!-- react-text: 934 -->終了:<!-- /react-text --><!-- react-text: 935 -->6月7日(月) 15時30分<!-- /react-text --></div></div></td><td class="update-time-cell date-cell">2021/05/25 12:25</td><td class="stretch-cell"></td></tr><tr data-symbol=""><td class="symbol-code-cell">4199</td><td class="symbol-cell"><div><div class="symbol-name">ポケモン4</div></div></td><td class="winner-result-cell">ミズゴロウ</td><td class="application-time-cell date-cell">2021/05/21 07:17</td><td class="winner-time-cell date-cell">-</td><td class="winner-buy-period-cell date-cell"><div><div><!-- react-text: 949 -->開始:<!-- /react-text --><!-- react-text: 950 -->6月2日(水) 09時00分<!-- /react-text --></div><div><!-- react-text: 952 -->終了:<!-- /react-text --><!-- react-text: 953 -->6月4日(金) 08時59分<!-- /react-text --></div></div></td><td class="spare-buy-period-cell date-cell"><div><div><!-- react-text: 957 -->開始:<!-- /react-text --><!-- react-text: 958 -->6月4日(金) 09時00分<!-- /react-text --></div><div><!-- react-text: 960 -->終了:<!-- /react-text --><!-- react-text: 961 -->6月7日(月) 15時30分<!-- /react-text --></div></div></td><td class="update-time-cell date-cell">2021/05/25 12:26</td><td class="stretch-cell"></td></tr></tbody></table>

該当のソースコード

python

1pokemonsauce = "HTMLを入れてあります" 2pokemons = pokemonsauce.find_all('div', attrs={'class': 'symbol-name'}) 3pokemon = pokemons[0].text 4pokemonnames = pokemonsauce.find_all('td', attrs={'class': 'winner-result-cell'}) 5pokemonname = pokemonnames[0].text 6details = {} 7 for pokemon in pokemons: 8 pokemonname = pokemonnames[0].text 9 details[pokemon] = pokemonname 10 11出力 12ポケモン1:アチャモ 13ポケモン2:アチャモ 14ポケモン3:アチャモ 15ポケモン4:アチャモ 16

試したこと

ここに問題に対して試したことを記載してください。

補足情報(FW/ツールのバージョンなど)

わかりづらいところばかりですが、質問いただければできるだけ早めに返答いたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ikapy

2021/10/01 14:20

実行するとdetails = {}の次の行for pokemon in pokemons:がIndentationError: unexpected indentになります。エラーの出ないpythonソースにしてください。
_whitecat_22

2021/10/01 22:34

ソースコード全文を、記入いただけますか?
guest

回答1

0

ベストアンサー

以下でできます。

python

1>>> details = {pokemon.text: pokemonname.text for pokemon, pokemonname in zip(pokemons, pokemonnames)} 2>>> print(details) 3{'ポケモン1': 'アチャモ', 'ポケモン2': 'ワカシャモ', 'ポケモン3': 'バシャーモ', 'ポケモン4': 'ミズゴロウ'}

投稿2021/10/01 23:09

ppaul

総合スコア24670

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

makamaka

2021/10/02 07:28

ご教授いただいたコードでうまくいきました。 もしよろしければ、コードがどのような意味をしているのか教えていただきたいです。 特にzipを使えることを知らなかったので、どのような意味か教えていただきたいです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問