netkeiba.com様から、beautifulsoup を用いて、競馬情報をスクレイピングする中で、<p>で改行された以降の情報が取れずに苦慮しています。
# -*- coding:utf-8 -*- import urllib2 import codecs import time from bs4 import BeautifulSoup f1 = codecs.open('chukyo_race_1.csv', 'w', 'utf-8') f1.write('other_race_name'+u"\n") url_1='http://race.netkeiba.com/?pid=race_old&id=c201707040101&mode=top' soup_1 = BeautifulSoup(urllib2.urlopen(url_1).read(),"lxml") other_race_name_tag_1 = soup_1.find('div',{'class':'race_otherdata'}).find('p') other_race_name_1 = "".join([x for x in other_race_name_tag_1.text if not x == u'\xa0' and not x == u'\n']) cols = [other_race_name_1.strip()] f1.write(",".join(cols) + "\n") print other_race_name_1.strip() f1.close()
netkeiba.com 様からスクレイピングさせていただいているのですが、上記のプログラムを動かすと、以下のようになります
4回中京1日目2歳
netkeiba,com様のソースコードを、下記に記します。
</dl> <div class="race_otherdata"> <p>4回中京1日目 2歳 </p> <p>混[指定] 16頭</p> <p>本賞金:500、200、130、75、50万円</p> </div> <ul class="btn_link_list fc">
小生のしたいことは、
4回中京1日目2歳16頭
というように、<P> の2行目の、16頭という 情報も取得することです。
しかし、改行されていることで、1行目のみしか、取得できません。
改行された以降の部分も取得したいのです。
findの部分を、findall に改変したり、select にも改変したのですが、エラーが出てしまいます。
いろいろ調べたのですが、うまく出来ず、苦慮しております。
諸先輩方の、御教示、よろしくお願いいたします。
d.find('p')しないで直接divの.text見るか、d.find_all('p')じゃダメなの?
回答1件
あなたの回答
tips
プレビュー