###前提・実現したいこと
python初心者でございます。
競馬情報の中の馬の情報をスクレイピングしておりますが、データのない空欄の処理に苦慮しております。
printする際に、以下のエラーメッセージが発生しました。
###発生している問題・エラーメッセージ
1998/11/01 4東京8 晴 天皇賞(秋)(G1) 12 1 1 1.2 1 中 武豊 58 芝2000 良 Traceback (most recent call la st): File "C:\Users\satoru\horse\horse-test-kami-1.py", line 44, in <module> race_time,difference,horse_pass,pace,nobori,horse_weight,win_horse UnicodeEncodeError: 'cp932' codec can't encode character u'\xa0' in position 3: illegal multibyte se quence
###該当のソースコード
# -*- coding:utf-8 -*- import urllib2 import codecs import time from bs4 import BeautifulSoup f = codecs.open('horse.csv', 'w', 'utf-8') f.write('race_date,kaisai,weather,race_number,race_name,tousuu,frame_number,horse_number,horse_odds,popularity,horse_arrival,jockey_name,weight,distance,baba, race_time,difference,horse_pass,pace,nobori,horse_weight,win_horse'+ u"\n") url='http://db.netkeiba.com/horse/1994103997/' soup = BeautifulSoup(urllib2.urlopen(url).read(),"lxml") tr_arr = soup.select("table.db_h_race_results > tbody > tr") for tr in tr_arr: tds = tr.findAll("td") race_date = tds[0].a.text #日付 kaisai = tds[1].a.text #開催 weather=tds[2].text #天気 race_number=tds[3].text #R race_name=tds[4].a.text #レース名 tousuu=tds[6].text #頭数 frame_number=tds[7].text #枠番 horse_number=tds[8].text #馬番 horse_odds=tds[9].text #オッズ popularity=tds[10].text #人気 horse_arrival=tds[11].text #着順 jockey_name=tds[12].a.text #騎手名 weight=tds[13].text #斤量 distance=tds[14].text #距離 baba=tds[15].text #馬場 race_time=tds[16].text #タイム difference=tds[17].text #着差 horse_pass=tds[18].text #通過 pace=tds[19].text #ペース nobori=tds[20].text #上り horse_weight=tds[21].text #馬体重 win_horse=tds[22].text #勝ち馬(2着馬) print race_date, kaisai,weather,race_name,tousuu,frame_number,horse_number,\ horse_odds,popularity,horse_arrival,jockey_name,weight,distance,baba,\ race_time,difference,horse_pass,pace,nobori,horse_weight,win_horse cols = [race_date, kaisai,weather,race_number,race_name,tousuu,frame_number,\ horse_number,horse_odds,popularity,horse_arrival,jockey_name,weight,\ distance,baba,race_time,difference,horse_pass,pace,nobori,horse_weight,win_horse] f.write(",".join(cols) + "\n") #single_win_racio,horse_nameという変数が未定義になっています。これの定義を追記してください。
###試したこと
空欄の処理における問題なのか、文字化けが原因の問題なのかも分からずに苦慮しております。
御教示、よろしくお願いいたします。
###補足情報(言語/FW/ツール等のバージョンなど)
python2.7
回答1件
あなたの回答
tips
プレビュー