実現したいこと
競馬ラボというサイトの着順表のページからレース名を取得した時、ターミナルやExcelのセルに入ってしまう謎の大きな空欄を削除したいです。
この着順表のページ https://www.keibalab.jp/db/race/202411170811/
の『マイルチャンピオンS(G1)』という文字をスクレイピングした時に、ターミナルやExcelのセルに謎の大きな空欄が入ってしまいます。
この大きな空欄を削除して、VSCのターミナルや、openpyxlで入力した時のExcelのセルに、普通に左詰めで文字を表示するようにしたいのですが、そのやり方がわからないので教えてほしいです。
また、おそらく対処法は同じだと思うのですが、https://www.keibalab.jp/db/race/202411170811/course.html
このページの『京都競馬場・芝1600m・外回り』という部分の文字をスクレイピングした時も同様の状況になってしまい、同様に改善したいので改善法を教えてください。
発生している問題・分からないこと
ターミナルでもExcelのセルでも中央寄せのような表示法になってしまっている状況です。
あと『マイルチャンピオンS』と『G1』の間が変に空いてしまっているのでこの直し方も知りたいです。
あとこれはできたらという程度の+α要素なんですが、ターミナル出力の時の文字サイズが若干大きい気がするので、この直し方があったら教えてほしいです。
該当のソースコード
<h1 class="raceTitle fL" itemprop="about"> マイルチャンピオンS <span class="std8">(GⅠ)</span> </h1> #ここと <h3 class="courseHeading"> 京都競馬場・芝1600m・外回り </h3> #ここです ################################################ # あとこういう感じでselectやfindを使ってCSSでhtmlを指定してスクレイピングしています # なのでこういう書き方を少し直して、謎の空欄を削除するとしたら、を教えていただけるとありがたいです。 # すみませんが、よろしくお願いします。 import requests from bs4 import BeautifulSoup course_names = [] race_names = [] #レース実施条件の一行を取得 load_url_kari = "https://www.keibalab.jp/db/race/202411170811/course.html" headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.3"} html2 = requests.get(load_url_kari, headers=headers) soup = BeautifulSoup(html2.content, "html.parser") course_name = soup.select('h3[class*="courseHeading"]')[0].text # course_name.replace(" ","") # course_name.ljust(0) course_names.append(course_name) for x in course_names: print(x) # レース名を取得 load_url_kari_2 = "https://www.keibalab.jp/db/race/202411170811/" headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.3"} html22 = requests.get(load_url_kari_2, headers=headers) soup2 = BeautifulSoup(html22.content, "html.parser") race_name = soup2.select('h1[class*="raceTitle fL"]')[0].text race_names.append(race_name) for y in race_names: print(y)
試したこと・調べたこと
- teratailやGoogle等で検索した
- ソースコードを自分なりに変更した
- 知人に聞いた
- その他
上記の詳細・結果
.replace(" ","") や .ljust(0) をとりあえず試したのですが、ダメでした...
補足
使用言語はpythonでBeautifulSoupとrequestsでスクレイピングしています。
なのでこれらで教えてください。
競馬ラボからスクレイピングするにはUserAgentが必要です。
1月22日17時35分追記:Xpathでの回答を頂くことができましたが、実は普段は上記追記ソースコードのようにCSSでスクレイピングしているので、そちらでのやり方を教えていただきたいです。
すみませんが、よろしくお願いします。

回答2件
あなたの回答
tips
プレビュー