python3.5、windows10を使用しております。
netkeiba.comよりレース情報をスクレイピングしております、
先週まで、動いていたプログラムが機能しなくなり苦慮しております。
# -*- coding:utf-8 -*- import urllib.request import codecs import time from bs4 import BeautifulSoup #京都競馬場レース情報 f1 = codecs.open('kyoto1.csv', 'w', 'utf-8') f1.write('type,race_number,other_race_name,other_race_name_2,tousuu,race_name,race_condition,horse_number,horse_name,sex_age,jockey_name,kinryo,odds,pop'+u"\n") url_1='http://oldrace.netkeiba.com/?pid=race_old&id=c202008010601' #race1 tr_arr_1 = soup_1.select("table.race_table_old nk_tb_common > tr ") for tr_1 in tr_arr_1: #time.sleep(0.25) tds_1 = tr_1.findAll("td") if len( tds_1 ) > 1: horse_number_1=tds_1[1].text #馬番 horse_name_1=tds_1[3].a.text #馬名 sex_age_1=tds_1[4].text #性齢 jockey_name_1=tds_1[6].a.text #騎手 kinryo_1=tds_1[5].text #斤量 odds_1=tds_1[8].text #オッズ pop_1=tds_1[9].text #人気 type_1 = "1" race_number_tag_1 = soup_1.find('div',{'class':'mainrace_data fc'}).find('dt') race_number_1 = "".join([x for x in race_number_tag_1.text if not x == u'\xa0' and not x == u'\n']) race_name_tag_1 = soup_1.find('div',{'class':'mainrace_data fc'}).find('h1') race_name_1 = "".join([x for x in race_name_tag_1.text if not x == u'\xa0' and not x == u'\n']) race_condition_tag_1 = soup_1.find('div',{'class':'mainrace_data fc'}).find('p') race_condition_1 = "".join([x for x in race_condition_tag_1.text if not x == u'\xa0' and not x == u'\n']) other_race_name_tag_1 = soup_1.find('div',{'class':'race_otherdata fc'}).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']) d_1 = soup_1.find('div',{'class':'race_otherdata'}) for p_1 in d_1.find_all('p'): t_1 = p_1.text.replace(u'\xa0', ',') # 「 」(NO-BREAK SPACE)=\xa0を分かりやすい区切り文字に置換 cols = [type_1.strip(),race_number_1.strip(),other_race_name_1.strip(),t_1.strip(),race_name_1.strip(),race_condition_1.strip(),horse_number_1.strip(),horse_name_1.strip(),sex_age_1.strip(),jockey_name_1.strip(),kinryo_1.strip(),odds_1.strip(),pop_1.strip()] f1.write(",".join(cols) + "\n") print (race_number_1.strip()) f1.close()
上記のソースコードは先週まで動いていたソースコードです。
これは京都1Rですが、実際には12Rまでソースコードを数字を変えて繰り返しております。
便宜上、1レースのみコードをのせています。
なにかエラーメッセージでもでると調べて直そうと思うのですが、エラーメッセージも出ません。
ただ、空のcsvデータをはきだすだけです。
併せて、今回netkeiba.comは新旧のレース情報を同時に掲載しております
https://oldrace.netkeiba.com/?pid=race_old&id=c202008010601
これは私が使っていますもので
https://race.netkeiba.com/race/shutuba.html?race_id=202008010601&rf=race_list
これが、新しいウェブリストです。
先週まで動いていたソースコードが旧型のアドレスで動かないことが
とても疑問に思います。
ソースコードも自分なりに調べてみましたが、エラーメッセージがでないので、自分としては
ここまでと思い、投稿させていただきました。
御教示をよろしくお願いいたします。
回答5件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/01/18 23:07