【競馬予想】2017年9月24日(日) - オールカマー・神戸新聞杯 -

機械学習競馬予測システム"LORELEY"を使用した、2017年9月24日(日) オールカマー神戸新聞杯 の予測です。

中山11R オールカマー

馬番 馬名 連対スコア
8 ステファノス 51.3
6 ルージュバック 40.1
9 タンタアレグリア 39.9
14 モンドインテロ 39.5
2 アルバート 39.1
15 カフジプリンス 29.3
16 ツクバアズマオー 25.7
4 ブラックバゴ 24
11 マイネルサージュ 22.3
12 デニムアンドルビー 21
10 マイネルミラノ 18.1
3 ショウナンバッハ 13
7 ディサイファ 12
5 グランアルマダ 10.3
13 マイネルディーン 10.2
17 トルークマクト 9.6
1 パリカラノテガミ 9.2

注目馬

阪神11R 神戸新聞杯

馬番 馬名 連対スコア
8 レイデオロ 69
5 キセキ 57.5
2 サトノアーサー 50
3 ダンビュライト 29.5
11 カデナ 26.1
4 ベストアプローチ 23.8
9 マイスタイル 21.9
7 タガノシャルドネ 21.7
10 ホウオウドリーム 20.1
12 エテレインミノル 15.9
6 アダムバローズ 14.3
14 アドマイヤウイナー 14.1
1 メイショウテンシャ 11.1
13 タガノヤグラ 10

注目馬

【競馬予想】2017年9月23日(土) - セプテンバーS・大阪スポーツ杯 -

機械学習競馬予測システム"LORELEY"を使用した、2017年9月23日(土) セプテンバーS・大阪スポーツ杯 の予測です。

中山11R セプテンバーS

馬番 馬名 連対スコア
10 アドマイヤナイト 63.1
4 タマモブリリアン 55.8
16 ニシオボヌール 27.7
14 モルジアナ 26.9
12 オデュッセウス 26.5
1 デンコウウノ 24.3
9 ユキノアイオロス 18.3
6 スマートカルロス 16.3
15 パラダイスガーデン 15
5 ドラゴンストリート 14.8
11 メイショウブイダン 13.7
2 クリノハッチャン 6.5
7 スズカアーサー 6.2
13 トシザキミ 5.8
3 パイメイメイ 4.1
8 クリノタカラチャン 3

注目馬

阪神11R 大阪スポーツ

馬番 馬名 連対スコア
7 サトノファンタシー 75.7
1 ダノンフェイス 45.2
3 サクラフローラ 33.1
12 カネトシビバーチェ 32.6
9 エルフィンコーブ 24.1
6 エキマエ 20.9
4 ペプチドウォヘッド 13.3
2 ライオンズバイツ 11.4
5 リバーソウル 11.4
13 メイショウカノン 11.4
8 キープレイヤー 6.4
16 ハニードント 6.1
15 カネコメオスター 5.6
11 スティンライクビー 5.5
10 ガンジー 5.4
14 ミキノグランプリ 4

注目馬

  • 3番サクラフローラ
  • 13番メイショウカノン

【Python3】スクレイピング中に[\xa0]に遭遇した時の対処法

Seleniumとlxmlを使ってクローリング&スクレイピングを行っている時に、\xa0という文字列が取得したい文字列に付与された状態で取得されてしまったことがあったので、対処法について調べてみました。

print(race_name)
#=> "新潟記念\xa0"

元のWebページはどうなっているのか確認

そもそもスクレイピング対象のWebページはどんな状態になっていたのかを開発者ツールから確認してみると、以下のようなページソースとなっていました。(「新潟記念」という文字列を取得する為に、「h1タグの中身を取得する」というcssセレクタを使っています。)

<h1>新潟記念&nbsp;</h1>

&nbspとはそもそもなに?

ノーブレークスペース(no-break space)を意味していて、スペースの箇所での自動的な改行を防ぐ特殊なスペースのことです。通常の半角スペースを使用した場合、ブラウザの表示サイズによって自動的に改行が行われる場合がありますが、&nbspを使用すると、どれだけ画面サイズが小さくなっても改行は行われません。 あれ?じゃあそしたら[&nbsp]という文字が付与されるんじゃないの?と思いましたが、そこの原因にあたりをつける為には、文字実体参照と数値文字参照ってなに?というのを把握する必要があります。

文字実体参照

HTMLにおいて、直接記述出来ない文字や記号を表記する際に、特定の文字列によってその文字を参照する文字実体参照という方法があります。HTMLに&nbsp;という文字列を書くことで、ブラウザが「改行しない空白」を表示する、という仕組みです。

数値文字参照

10進数もしくは16進数によって直接記述出来ない文字や記号を指定する方法です。文字実体参照は「特定の文字列」で特殊文字を参照するのに対して、数値文字参照は、「数値と文字」で参照を行います。(文字実体参照の方が直感的であるが、文字実体参照として定義されていない特殊文字を参照する為には、数値文字参照を使用する必要がある)

結論

ノンブレークスペースの文字実体参照は[&nbsp;]で、数値文字参照が[\xa0]です。cssselectでh1タグ内の文字列を取得した際に、ノンブレークスペースが本当に取得したい文字列(新潟記念)の後に記述されていた為、ノンブレークスペースの数値文字参照が文字として一緒に取得されてしまった、というのが原因のようですね。

対処法

非常に簡単で、余計な文字列はいらないので、replaceで消してあげればOKです

print(race_name.replace(u"\xa0",u""))
#=> "新潟記念"