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

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

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

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

Q&A

解決済

1回答

2503閲覧

python2.7,beautifulsoupでの競馬情報のスクレイピングが、うまく出来ません。

akakage13

総合スコア89

Python

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

0グッド

1クリップ

投稿2017/06/07 20:10

netkeiba.com様から、python2.7,beautifulsoupでの競馬情報をスクレイピングしておりますが、うまく出来ません。

# -*- coding:utf-8 -*- import urllib2 import codecs import time from bs4 import BeautifulSoup url = 'http://db.netkeiba.com/horse/2013106055/' soup = BeautifulSoup(urllib2.urlopen(url).read(), "lxml") tekisei = soup.find('div', {'class': 'db_h_rank_review'}).findAll('td') tekisei_1 = tekisei[0].text print tekisei_1.strip()
<div class="db_h_rank_review"> <div class="categorybar_line" > <h3 class="categorybar"><img src="http://cimg2.db.netkeiba.com/style/netkeiba.ja/image/icon_db_tekisei_02.png" width="20" height="20" alt="" />みんなの適性レビュー</h3> </div> <dl> <dd> <table summary="アストラエンブレムの適性レビュー"> <tr> <th>コース適性</th> <td><img src="http://cimg2.db.netkeiba.com/style/netkeiba.ja/image/review_turf_blue.png" width="26" height="17" alt="芝" /><img src="http://cimg2.db.netkeiba.com/style/netkeiba.ja/image/review_bar_blue.png" width="150" height="17" /><img src="http://cimg2.db.netkeiba.com/style/netkeiba.ja/image/review_centerline.png" width="1" height="17" /><img src="http://cimg2.db.netkeiba.com/style/netkeiba.ja/image/review_bar_gray.png" width="44" height="17" /><img src="http://cimg2.db.netkeiba.com/style/netkeiba.ja/image/review_dirt_gray.png" width="26" height="17" alt="ダート" /></td> </tr> <tr> <th>距離適性</th> <td><img src="http://cimg2.db.netkeiba.com/style/netkeiba.ja/image/review_sprint_blue.png" width="26" height="17" alt="短い" /><img src="http://cimg2.db.netkeiba.com/style/netkeiba.ja/image/review_bar_blue.png" width="134" height="17" /><img src="http://cimg2.db.netkeiba.com/style/netkeiba.ja/image/review_centerline.png" width="1" height="17" /><img src="http://cimg2.db.netkeiba.com/style/netkeiba.ja/image/review_bar_gray.png" width="60" height="17" /><img src="http://cimg2.db.netkeiba.com/style/netkeiba.ja/image/review_styer_gray.png" width="26" height="17" alt="長い" /></td> </tr> <tr> <th>脚質</th> <td><img src="http://cimg2.db.netkeiba.com/style/netkeiba.ja/image/review_nige_gray.png" width="26" height="17" alt="逃げ" /><img src="http://cimg2.db.netkeiba.com/style/netkeiba.ja/image/review_bar_gray.png" width="36" height="17" /><img src="http://cimg2.db.netkeiba.com/style/netkeiba.ja/image/review_centerline.png" width="1" height="17" /><img src="http://cimg2.db.netkeiba.com/style/netkeiba.ja/image/review_bar_blue.png" width="158" height="17" /><img src="http://cimg2.db.netkeiba.com/style/netkeiba.ja/image/review_oikomi_blue.png" width="26" height="17" alt="追込" /></td> </tr> <tr> <th>成長</th> <td><img src="http://cimg2.db.netkeiba.com/style/netkeiba.ja/image/review_soujuku_blue.png" width="26" height="17" alt="早熟" /><img src="http://cimg2.db.netkeiba.com/style/netkeiba.ja/image/review_bar_blue.png" width="132" height="17" /><img src="http://cimg2.db.netkeiba.com/style/netkeiba.ja/image/review_centerline.png" width="1" height="17" /><img src="http://cimg2.db.netkeiba.com/style/netkeiba.ja/image/review_bar_gray.png" width="62" height="17" /><img src="http://cimg2.db.netkeiba.com/style/netkeiba.ja/image/review_bansei_gray.png" width="26" height="17" alt="晩成" /></td> </tr> <tr> <th>重馬場</th> <td><img src="http://cimg2.db.netkeiba.com/style/netkeiba.ja/image/review_tokui_blue.png" width="26" height="17" alt="得意" /><img src="http://cimg2.db.netkeiba.com/style/netkeiba.ja/image/review_bar_blue.png" width="114" height="17" /><img src="http://cimg2.db.netkeiba.com/style/netkeiba.ja/image/review_centerline.png" width="1" height="17" /><img src="http://cimg2.db.netkeiba.com/style/netkeiba.ja/image/review_bar_gray.png" width="80" height="17" /><img src="http://cimg2.db.netkeiba.com/style/netkeiba.ja/image/review_nigate_gray.png" width="26" height="17" alt="苦手" /></td> </tr>

上記の小生のスクリプトは、tdをはきだすことは、確認しております。

tekisei = soup.find('div', {'class': 'db_h_rank_review'}).findAll('td')

ここまでは、良いのですが、上記にございます、目的のソースコードの中の 指定したwidth="○○" の数値を取りたいのですがうまく出来ません。

具体的には

コース適性
<img src="http://cimg2.db.netkeiba.com/style/netkeiba.ja/image/review_bar_blue.png" width="150"

距離適性
<img src="http://cimg2.db.netkeiba.com/style/netkeiba.ja/image/review_bar_blue.png" width="134"

脚質
<img src="http://cimg2.db.netkeiba.com/style/netkeiba.ja/image/review_bar_gray.png" width="36"

成長
<img src="http://cimg2.db.netkeiba.com/style/netkeiba.ja/image/review_bar_blue.png" width="132"

重馬場
<img src="http://cimg2.db.netkeiba.com/style/netkeiba.ja/image/review_bar_blue.png" width="114"

上記のwidth="○○" の数値を取りたいのです。

いろいろ、試しましたが、うまく出来ませんでした。

先輩方の御教示、よろしくお願いいたします。

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

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

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

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

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

guest

回答1

0

ベストアンサー

img タグをすべて取得して、その中の width属性 を取得するとよいのではないでしょうか。

Python

1imgs = tekisei[0].findAll('img') 2for img in imgs: 3 print(img.attrs['width'])

【補足】

3番目のデータを取り出す方法例

Python

1# -*- coding:utf-8 -*- 2 3import urllib2 4import codecs 5import time 6from bs4 import BeautifulSoup 7 8url = 'http://db.netkeiba.com/horse/2013106055/' 9 10soup = BeautifulSoup(urllib2.urlopen(url).read(), "lxml") 11tekisei = soup.find('div', {'class': 'db_h_rank_review'}).findAll('td') 12imgs = tekisei[0].findAll('img') 13print(imgs[3].attrs['width'])

投稿2017/06/07 23:43

編集2017/06/09 14:10
magichan

総合スコア15898

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

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

akakage13

2017/06/08 11:27

magichan様、御教示ありがとうございます! うまく拾えるようになりましたが、重ねて、御教示いただきたいことがございます。 これらの数値の、3番目、8番目、13番目の数字のみを拾い出す方法を 御教示よろしくお願いいたします。 tekisei_1 = (img.attrs['width'])[3] このような手法ではうまく出来ませんでした。
magichan

2017/06/08 11:43

例えば3番目であれば、 imgs[3].attrs['width'] のようにして取り出せます。
akakage13

2017/06/09 10:27

magichan様、早々の御回答ありがとうございました。 御教示とおり行ったのですが、 tekisei_1 = img[3].attrs['width'] File "C:\Python27\lib\site-packages\bs4\element.py", line 958, in __getitem__ return self.attrs[key] KeyError: 3 C:\Users\satoru\horse\horse> エラーが出てまいります。いくつか試しましたがうまく動きません。 御教示いただけると幸いでございます。
magichan

2017/06/09 14:11

認識違いがあるかもしれませんので、3番目のデータを取得するコードを追記しておきました。
akakage13

2017/06/09 19:35

magichan様、うまく動くようになりました。 懇切丁寧な御教示、本当にありがとうございました。 今後とも、よろしくお願いいたします。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問