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

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

新規登録して質問してみよう
ただいま回答率
85.46%
Beautiful Soup

Beautiful Soupは、Pythonのライブラリの一つ。スクレイピングに特化しています。HTMLデータの構文の解析を行うために、HTMLタグ/CSSのセレクタで抽出する部分を指定することが可能です。

Python

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

selenium

Selenium(セレニウム)は、ブラウザをプログラムで作動させるフレームワークです。この原理を使うことにより、ブラウザのユーザーテストなどを自動化にすることができます。

Q&A

解決済

2回答

766閲覧

.textがで文字だけを抽出する方法

makamaka

総合スコア21

Beautiful Soup

Beautiful Soupは、Pythonのライブラリの一つ。スクレイピングに特化しています。HTMLデータの構文の解析を行うために、HTMLタグ/CSSのセレクタで抽出する部分を指定することが可能です。

Python

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

selenium

Selenium(セレニウム)は、ブラウザをプログラムで作動させるフレームワークです。この原理を使うことにより、ブラウザのユーザーテストなどを自動化にすることができます。

0グッド

0クリップ

投稿2021/10/04 11:43

編集2021/10/04 11:47

前提・実現したいこと

対象のHTMLから表を作りたいと思っています。
表をつくるところまでできたのですが、、余計なものがついてきてしまっているので、文字のみを抽出したいと考えています。

下記コードのpokemon_nameをpokemon_name.textで文字のみにできると思ったのですが、できませんでした。文字のみにする方法を知っているかた、ご教授ください。

HTMLは長いため、下記コードのspotに格納してあるHTMLのみ文字制限のため、コメントに記載します。必要でしたら、全文記載しますので、お申し付けください。

該当のソースコード

python

1spots = soup.find_all('div', attrs={'class': 'list-table'}) 2spot = spots[0] 3pokemon_taitles = spot.find('th', attrs={'class': 'symbol-cell'}) 4 5pokemon_taitle = pokemon_taitles.text 6 7meigara_taitle 8'ポケモン' 9 10pokemon_name = spot.find_all('div', attrs={'class': 'symbol-name'}) 11pokemon_name 12[<div class="symbol-name">アチャモ</div>, 13 <div class="symbol-name">ミズゴロウ</div>, 14 <div class="symbol-name">キモリ</div>, 15 <div class="symbol-name">コイキング</div>, 16 <div class="symbol-name">ヒトカゲ</div>] 17 18pokemon = pokemon_name 19pokemon 20[<div class="symbol-name">アチャモ</div>, 21 <div class="symbol-name">ミズゴロウ</div>, 22 <div class="symbol-name">キモリ</div>, 23 <div class="symbol-name">コイキング</div>, 24 <div class="symbol-name">ヒトカゲ</div>] 25 26details = {} 27 28for spot in spots: 29 pokemon_taitle = pokemon_taitles.text 30 pokemon = pokemon_name 31 32 details[pokemon_taitle] = pokemon 33 34details 35{'銘柄名': [<div class="symbol-name">アチャモ</div>, 36 <div class="symbol-name">ミズゴロウ</div>, 37 <div class="symbol-name">キモリ</div>, 38 <div class="symbol-name">コイキング</div>, 39 <div class="symbol-name">ヒトカゲ</div>]} 40 41spots = soup.find_all('div', attrs={'class': 'list-table'}) 42spot = spots[0] 43waza_taitles = spot.find('th', attrs={'class': 'winner-result-cell'}) 44 45waza_taitle = waza_taitles.text 46waza_taitle 47'技' 48 49waza_name = spot.find_all('td', attrs={'class': 'winner-result-cell'}) 50waza_name 51[<td class="winner-result-cell">ひのこ</td>, 52 <td class="winner-result-cell">あわ</td>, 53 <td class="winner-result-cell">はたく</td>, 54 <td class="winner-result-cell">はねる</td>, 55 <td class="winner-result-cell">えんまく</td>] 56 57waza = waza_name 58waza 59[<td class="winner-result-cell">ひのこ</td>, 60 <td class="winner-result-cell">あわ</td>, 61 <td class="winner-result-cell">はたく</td>, 62 <td class="winner-result-cell">はねる</td>, 63 <td class="winner-result-cell">えんまく</td>] 64 65datum = details 66datum[waza_taitle] = waza 67 68datum 69{'銘柄名': [<div class="symbol-name">アチャモ</div>, 70 <div class="symbol-name">ミズゴロウ</div>, 71 <div class="symbol-name">キモリ</div>, 72 <div class="symbol-name">コイキング</div>, 73 <div class="symbol-name">ヒトカゲ</div>], 74 '技': [<td class="winner-result-cell">ひのこ</td>, 75 <td class="winner-result-cell">あわ</td>, 76 <td class="winner-result-cell">はたく</td>, 77 <td class="winner-result-cell">はねる</td>, 78 <td class="winner-result-cell">えんまく</td>]} 79 80df = pd.DataFrame(datum) 81df.to_csv('自動.csv', index=False) 82 83 84 85自動.CSV 86|ポケモン                    || 87|<div class="symbol-name">アチャモ</div>  |<td class="winner-result-cell">ひのこ</td>,|- 88|<div class="symbol-name">ミズゴロウ</div> <td class="winner-result-cell">あわ</td> 89 <div class="symbol-name">キモリ</div> <td class="winner-result-cell">はたく</td> 90 <div class="symbol-name">コイキング</div> <td class="winner-result-cell">はねる</td> 91 <div class="symbol-name">ヒトカゲ</div>] <td class="winner-result-cell">えんまく</td> 92 93||| 94

試したこと

pokemon_name.text
エラーコード
ResultSet object has no attribute 'text'. You're probably treating a list of elements like a single element. Did you call find_all() when you meant to call find()?

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

python
jupyterlab
selenium
pandas

初心者のため、わかりにくいところが多々あるかと思いますが、ご質問いただければ、なるべく早く返信いたしますので。気兼ねなくご質問ください。

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

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

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

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

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

guest

回答2

0

ベストアンサー

これって、プログラムじゃなくて、対話型実行のログですよね?

pokemon_nameは、リストなので、textメソッドは適用できません。
pokemon_nameの個々の要素1つ1つについて、textを適用しましょう。

参考:

Python

1for x in pokemon_name: 2 print(x.text)

投稿2021/10/04 11:56

otn

総合スコア84806

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

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

makamaka

2021/10/04 12:03

ご回答ありがとうございます。 教えていただいたことを実行したところ、文字のみにすることができました。 しかし、文字を表に入れることができません。 もし、可能でしたら、そちらのやり方もご教授いただけないでしょうか。
otn

2021/10/04 12:11

プログラミングが初めてでしょうか? わかりやすいのは、 y = [] for x in pokemon_name: y.append(x.text) でしょうね。appendの意味はわかりますか?
makamaka

2021/10/04 12:44 編集

おはずかしながらプログラミングは初めてで、様々な媒体から情報を収集しながら勉強しているところです。 appendは私の認識ではリストの中に要素を追加する際に使うものという認識です。 わかりやすいコードまで教えていただきありがとうございます。 教えていただいたコードを私なりに解釈しますと、yという変数の中にfor文の結果であるx.textを入れるという認識なのですが、あっていますでしょうか。
otn

2021/10/04 13:51

> yという変数の中にfor文の結果であるx.textを入れ そうですね。「入れる」というか「追加する」ですが。
makamaka

2021/10/04 14:15

ご回答ありがとうございます。 とても勉強になりました。 今後ともいろいろわからないところが出てくるかと思いますが、お時間ある時におしえていただければとおもいます。 本当お時間いただきありがとうございます。
guest

0

spot

1<div class="list-table"><table class="table table-striped table-list-view ipo-history-list"><thead><tr><th class="symbol-code-cell"><!-- react-text: 880 -->コード<!-- /react-text --></th><th class="symbol-cell"><!-- react-text: 882 -->ポケモン<!-- /react-text --></th><th class="winner-result-cell"><!-- react-text: 884 -->技<!-- /react-text --></th><th class="application-time-cell"><!-- react-text: 886 -->申込日時<!-- /react-text --></th><th class="winner-time-cell"><!-- react-text: 888 -->当選日<!-- /react-text --></th><th class="winner-buy-period-cell"><!-- react-text: 890 -->当選者購入期間<!-- /react-text --></th><th class="spare-buy-period-cell"><!-- react-text: 892 -->補欠当選者購入期間<!-- /react-text --></th><th class="update-time-cell"><!-- react-text: 894 -->更新日時<!-- /react-text --></th><th class="stretch-cell"></th></tr></thead></table><div class="overflow-col" style="height: calc(100vh - 166px);"><div style="height: 100%; overflow: hidden;"><div class="scroll nice-scroll" style="height: 100%; position: relative; overflow-y: hidden; outline: none;" tabindex="6"><div style="position: relative;"><table class="table table-striped table-list-view ipo-history-list" style="position: relative;"><tbody><tr data-symbol=""><td class="symbol-code-cell">4378</td><td class="symbol-cell"><div><div class="symbol-name">アチャモ</div></div></td><td class="winner-result-cell">ひのこ</td><td class="application-time-cell date-cell">2021/10/04 19:41</td><td class="winner-time-cell date-cell">-</td><td class="winner-buy-period-cell date-cell"><div><div><!-- react-text: 918 -->開始:<!-- /react-text --><!-- react-text: 919 -->10月19日(火) 09時00分<!-- /react-text --></div><div><!-- react-text: 921 -->終了:<!-- /react-text --><!-- react-text: 922 -->10月21日(木) 08時59分<!-- /react-text --></div></div></td><td class="spare-buy-period-cell date-cell"><div><div><!-- react-text: 926 -->開始:<!-- /react-text --><!-- react-text: 927 -->10月21日(木) 09時00分<!-- /react-text --></div><div><!-- react-text: 929 -->終了:<!-- /react-text --><!-- react-text: 930 -->10月22日(金) 15時30分<!-- /react-text --></div></div></td><td class="update-time-cell date-cell">2021/10/04 19:41</td><td class="stretch-cell"></td></tr><tr data-symbol=""><td class="symbol-code-cell">6523</td><td class="symbol-cell"><div><div class="symbol-name">ミズゴロウ</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: 944 -->開始:<!-- /react-text --><!-- react-text: 945 -->10月7日(木) 09時00分<!-- /react-text --></div><div><!-- react-text: 947 -->終了:<!-- /react-text --><!-- react-text: 948 -->10月11日(月) 08時59分<!-- /react-text --></div></div></td><td class="spare-buy-period-cell date-cell"><div><div><!-- react-text: 952 -->開始:<!-- /react-text --><!-- react-text: 953 -->10月11日(月) 09時00分<!-- /react-text --></div><div><!-- react-text: 955 -->終了:<!-- /react-text --><!-- react-text: 956 -->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">キモリ</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: 970 -->開始:<!-- /react-text --><!-- react-text: 971 -->6月8日(火) 09時00分<!-- /react-text --></div><div><!-- react-text: 973 -->終了:<!-- /react-text --><!-- react-text: 974 -->6月10日(木) 08時59分<!-- /react-text --></div></div></td><td class="spare-buy-period-cell date-cell"><div><div><!-- react-text: 978 -->開始:<!-- /react-text --><!-- react-text: 979 -->6月10日(木) 09時00分<!-- /react-text --></div><div><!-- react-text: 981 -->終了:<!-- /react-text --><!-- react-text: 982 -->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">コイキング</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: 996 -->開始:<!-- /react-text --><!-- react-text: 997 -->6月2日(水) 09時00分<!-- /react-text --></div><div><!-- react-text: 999 -->終了:<!-- /react-text --><!-- react-text: 1000 -->6月4日(金) 08時59分<!-- /react-text --></div></div></td><td class="spare-buy-period-cell date-cell"><div><div><!-- react-text: 1004 -->開始:<!-- /react-text --><!-- react-text: 1005 -->6月4日(金) 09時00分<!-- /react-text --></div><div><!-- react-text: 1007 -->終了:<!-- /react-text --><!-- react-text: 1008 -->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">ヒトカゲ</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: 1022 -->開始:<!-- /react-text --><!-- react-text: 1023 -->6月2日(水) 09時00分<!-- /react-text --></div><div><!-- react-text: 1025 -->終了:<!-- /react-text --><!-- react-text: 1026 -->6月4日(金) 08時59分<!-- /react-text --></div></div></td><td class="spare-buy-period-cell date-cell"><div><div><!-- react-text: 1030 -->開始:<!-- /react-text --><!-- react-text: 1031 -->6月4日(金) 09時00分<!-- /react-text --></div><div><!-- react-text: 1033 -->終了:<!-- /react-text --><!-- react-text: 1034 -->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><object class="resize-sensor" data="about:blank" style="display: block; position: absolute; top: 0; left: 0; height: 100%; width: 100%; overflow: hidden; pointer-events: none; z-index: -1; opacity: 0;" type="text/html"></object></div><object class="resize-sensor" data="about:blank" style="display: block; position: absolute; top: 0; left: 0; height: 100%; width: 100%; overflow: hidden; pointer-events: none; z-index: -1; opacity: 0;" type="text/html"></object></div></div></div><table class="table table-striped table-list-view ipo-history-list"></table></div>

投稿2021/10/04 11:44

makamaka

総合スコア21

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問