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

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

新規登録して質問してみよう
ただいま回答率
85.35%
スクレイピング

スクレイピングとは、公開されているWebサイトからページ内の情報を抽出する技術です。

Beautiful Soup

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

Python

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

Q&A

解決済

1回答

1232閲覧

スクレイピングでいらない部分まで取り出してしまう

rikuanpg9294

総合スコア15

スクレイピング

スクレイピングとは、公開されているWebサイトからページ内の情報を抽出する技術です。

Beautiful Soup

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

Python

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

0グッド

0クリップ

投稿2021/05/22 05:39

編集2021/05/22 09:26

競馬のスクレイピングで馬番を連続して取り出したいのです。

スクレイピングサイト https://keiba.rakuten.co.jp/race_performance/list/RACEID/202105142726040301

<tbody の中にある <td class="number">1</td>(出走頭分)のみを取り出したいのです。

以下のようにコードを書いたのですが

python

1#馬番 2horse_len = soup.find_all("td",class_="number") 3horse_len_list = [] 4for horse_len_1 in horse_len: 5 horse_len_1 = horse_len_1.get_text() 6 horse_len_list.append("horse_len_1")

とコード書くと
[<td class="number">9</td>,

<td class="number">7</td>, <td class="number">3</td>, <td class="number">8</td>, <td class="number">4</td>, <td class="number">10</td>, <td class="number">6</td>, <td class="number">5</td>, <td class="number">2</td>, <td class="number">1</td>, <td class="number">9</td>, <td class="number">9-7</td>, <td class="number">9<br/>7<br/>3</td>, <td class="number">7-9<br/>3-9<br/>3-7</td>, <td class="number">7-8</td>, <td class="number">3-7-9</td>, <td class="number">-</td>, <td class="number">9-7-3</td>, <td class="number">7-9</td>] と下8行にレース結果の馬番までが取り出されてしまいます。

html

1<tbody class="record"> 2<tr class="box08" data-grouping="9"> 3<td class="order">1</td> 4<th class="position" scope="row">8</th> 5<td class="number">9</td> 6<td class="horse"> 7<a href="https://keiba.rakuten.co.jp/horse_detail/detail/HORSEID/1120160663" target="_blank"> 8 アグネスフォース 9 </a> 10</td> 11<td class="state">牡7 12 /鹿毛</td> 13<td class="weightTax">56.0</td> 14<td class="weight"> 15 506<br/>±0 16 </td> 17<td class="jockey"> 18 川原正<br/> 19 (園田) 20 </td> 21<td class="time">1:33.8</td> 22<td class="lead"> 23</td> 24<td class="spurt">40.3</td> 25<td class="tamer">稲田彰</td> 26<td class="rank">1</td> 27</tr> 28<tr class="box07" data-grouping="7"> 29<td class="order">2</td> 30<th class="position" scope="row">7</th> 31<td class="number">7</td> 32<td class="horse"> 33<a href="https://keiba.rakuten.co.jp/horse_detail/detail/HORSEID/220180081" target="_blank"> 34 クイーンソネラ 35 </a> 36</td> 37<td class="state">牝5 38 /芦毛</td> 39<td class="weightTax">51.0</td> 40<td class="weight"> 41 440<br/>±0 42 </td> 43<td class="jockey"> 44 ▲大山龍<br/> 45 (西脇) 46 </td> 47<td class="time">1:33.9</td> 48<td class="lead"> 49 3/4 50 </td> 51<td class="spurt">40.7</td> 52<td class="tamer">高馬元</td> 53<td class="rank">5</td> 54</tr> 55<tr class="box03" data-grouping="3"> 56<td class="order">3</td> 57<th class="position" scope="row">3</th> 58<td class="number">3</td> 59<td class="horse"> 60<a href="https://keiba.rakuten.co.jp/horse_detail/detail/HORSEID/120170619" target="_blank"> 61 ニットウバーブラ 62 </a> 63</td> 64<td class="state">牝7 65 /黒鹿毛</td> 66<td class="weightTax">54.0</td> 67<td class="weight"> 68 460<br/>+7 69 </td> 70<td class="jockey"> 71 下原理<br/> 72 (西脇) 73 </td> 74<td class="time">1:34.4</td> 75<td class="lead"> 7677 </td> 78<td class="spurt">41.2</td> 79<td class="tamer">土屋洋</td> 80<td class="rank">3</td> 81</tr> 82<tr class="box07" data-grouping="8"> 83<td class="order">4</td> 84<th class="position" scope="row">7</th> 85<td class="number">8</td> 86<td class="horse"> 87<a href="https://keiba.rakuten.co.jp/horse_detail/detail/HORSEID/1120190570" target="_blank"> 88 シャウエン 89 </a> 90</td> 91<td class="state">牝5 92 /青鹿毛</td> 93<td class="weightTax">51.0</td> 94<td class="weight"> 95 468<br/>-1 96 </td> 97<td class="jockey"> 98 ▲長尾翼<br/> 99 (西脇) 100 </td> 101<td class="time">1:34.4</td> 102<td class="lead"> 103 クビ 104 </td> 105<td class="spurt">40.1</td> 106<td class="tamer">西川精</td> 107<td class="rank">4</td> 108</tr> 109<tr class="box04" data-grouping="4"> 110<td class="order">5</td> 111<th class="position" scope="row">4</th> 112<td class="number">4</td> 113<td class="horse"> 114<a href="https://keiba.rakuten.co.jp/horse_detail/detail/HORSEID/1120170317" target="_blank"> 115 モアナジンク 116 </a> 117</td> 118<td class="state">牝6 119 /鹿毛</td> 120<td class="weightTax">54.0</td> 121<td class="weight"> 122 465<br/>+4 123 </td> 124<td class="jockey"> 125 小谷周<br/> 126 (園田) 127 </td> 128<td class="time">1:34.9</td> 129<td class="lead"> 130131 </td> 132<td class="spurt">40.3</td> 133<td class="tamer">大石省</td> 134<td class="rank">6</td> 135</tr> 136<tr class="box08" data-grouping="10"> 137<td class="order">6</td> 138<th class="position" scope="row">8</th> 139<td class="number">10</td> 140<td class="horse"> 141<a href="https://keiba.rakuten.co.jp/horse_detail/detail/HORSEID/120160225" target="_blank"> 142 ラバーソール 143 </a> 144</td> 145<td class="state">牝7 146 /鹿毛</td> 147<td class="weightTax">54.0</td> 148<td class="weight"> 149 480<br/>-1 150 </td> 151<td class="jockey"> 152 山田雄<br/> 153 (園田) 154 </td> 155<td class="time">1:35.1</td> 156<td class="lead"> 157158 </td> 159<td class="spurt">41.2</td> 160<td class="tamer">雑賀伸</td> 161<td class="rank">8</td> 162</tr> 163<tr class="box06" data-grouping="6"> 164<td class="order">7</td> 165<th class="position" scope="row">6</th> 166<td class="number">6</td> 167<td class="horse"> 168<a href="https://keiba.rakuten.co.jp/horse_detail/detail/HORSEID/120180798" target="_blank"> 169 レコパンサムライ 170 </a> 171</td> 172<td class="state">牡4 173 /鹿毛</td> 174<td class="weightTax">56.0</td> 175<td class="weight"> 176 452<br/>+10 177 </td> 178<td class="jockey"> 179 大山真<br/> 180 (園田) 181 </td> 182<td class="time">1:35.1</td> 183<td class="lead"> 184 クビ 185 </td> 186<td class="spurt">40.6</td> 187<td class="tamer">尾原強</td> 188<td class="rank">2</td> 189</tr> 190<tr class="box05" data-grouping="5"> 191<td class="order">8</td> 192<th class="position" scope="row">5</th> 193<td class="number">5</td> 194<td class="horse"> 195<a href="https://keiba.rakuten.co.jp/horse_detail/detail/HORSEID/1120200332" target="_blank"> 196 ミラクルズハプン 197 </a> 198</td> 199<td class="state">牝4 200 /鹿毛</td> 201<td class="weightTax">54.0</td> 202<td class="weight"> 203 427<br/>±0 204 </td> 205<td class="jockey"> 206 田野豊<br/> 207 (園田) 208 </td> 209<td class="time">1:35.5</td> 210<td class="lead"> 211 2 1/2 212 </td> 213<td class="spurt">41.9</td> 214<td class="tamer">稲田彰</td> 215<td class="rank">9</td> 216</tr> 217<tr class="box02" data-grouping="2"> 218<td class="order">9</td> 219<th class="position" scope="row">2</th> 220<td class="number">2</td> 221<td class="horse"> 222<a href="https://keiba.rakuten.co.jp/horse_detail/detail/HORSEID/1120190629" target="_blank"> 223 ワンダートランプ 224 </a> 225</td> 226<td class="state">牡4 227 /鹿毛</td> 228<td class="weightTax">56.0</td> 229<td class="weight"> 230 506<br/>+5 231 </td> 232<td class="jockey"> 233 板野央<br/> 234 (園田) 235 </td> 236<td class="time">1:35.5</td> 237<td class="lead"> 238 ハナ 239 </td> 240<td class="spurt">40.2</td> 241<td class="tamer">木村健</td> 242<td class="rank">10</td> 243</tr> 244<tr class="box01" data-grouping="1"> 245<td class="order">10</td> 246<th class="position" scope="row">1</th> 247<td class="number">1</td> 248<td class="horse"> 249<a href="https://keiba.rakuten.co.jp/horse_detail/detail/HORSEID/1120200351" target="_blank"> 250 ココリミッション 251 </a> 252</td> 253<td class="state">牡4 254 /黒鹿毛</td> 255<td class="weightTax">52.0</td> 256<td class="weight"> 257 438<br/>-5 258 </td> 259<td class="jockey"> 260 ★佐々世<br/> 261 (園田) 262 </td> 263<td class="time">1:36.4</td> 264<td class="lead"> 265266 </td> 267<td class="spurt">42.2</td> 268<td class="tamer">北野真</td> 269<td class="rank">7</td> 270</tr> 271</tbody>

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

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

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

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

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

guest

回答1

0

ベストアンサー

<td class="order">1</td> を取り出したいなら、

horse_len = soup.find_all("td",class_="number")

ではなく、

horse_len = soup.find_all("td",class_="order")

ではないのでしょうか。

質問が変更されたようですね。
それならこんな感じです。

python

1>>> horse_len_list = [ho.find_next_siblings()[1] for ho in soup.find_all("td",class_="order")] 2>>> for x in horse_len_list: 3... print(x) 4... 5<td class="number">9</td> 6<td class="number">7</td> 7<td class="number">3</td> 8<td class="number">8</td> 9<td class="number">4</td> 10<td class="number">10</td> 11<td class="number">6</td> 12<td class="number">5</td> 13<td class="number">2</td> 14<td class="number">1</td>

投稿2021/05/22 07:31

編集2021/05/22 11:29
ppaul

総合スコア24670

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

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

rikuanpg9294

2021/05/22 08:34

order にしてしまうと馬番ではなく着順をスクレイピングしてしまいます。
rikuanpg9294

2021/05/22 13:04

ありがとうございます。
rikuanpg9294

2021/05/22 14:20 編集

何度も申し訳ございません。<td class="rank">の部分をコメントに書いていただいたコードを参考にスクレイピングしたのですが、空のデータで返されたり、いらない部分までスクレイピングしてしまいます。助けていただけませんか?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問