Dieser Artikel ist eine interne Code-Erklärung der dreifachen Vorhersage-Website für Bootsrennen "Haben Sie heute eine gute Vorhersage?", die von mir erstellt und im Web veröffentlicht wurde. Es wird sein. Dieses Mal werde ich über Web Scraping zusammenfassen.
Ich möchte eine dreifache Vorhersage-Site für Bootsrennen durch maschinelles Lernen erstellen, daher möchte ich irgendwie vergangene Rennergebnisse als Trainingsdaten erhalten. Die Mindestinformation, die ich möchte, ist ...
Ist es? Alle anderen Informationen, die Sie möchten
Und so weiter. Die neueste offizielle Website von Boat Race enthält gut gepflegte Daten. Sie können auch auf frühere Rennergebnisse verweisen.
Dieses Mal möchte ich die Rennergebnisse erhalten, die die Quelle der Lerndaten von hier sind!
Nach vorherigem Wissen über Bootsrennen finden Rennen auf einigen der 24 Rennstrecken grundsätzlich 365 Tage im Jahr statt. Nachdem ich die URL-Struktur verstanden hatte, entschied ich mich daher, Renninformationen für die gewünschte Anzahl von Tagen x 24 Rennstrecken zu erhalten. (Wenn das Rennen nicht ausgetragen wird, wird der Vorgang übersprungen.)
Ich habe die URL-Struktur verstanden und eine Box vorbereitet, die die URL wie folgt enthält. Im Code werden nur die Daten von 2020/6/22 erfasst. Wenn Sie jedoch die Liste von Jahr, Monat und Tag erhöhen, können Sie mit diesem Bild auch URLs anderer Daten erfassen.
import pandas as pd
import numpy as np
list = []
year = ['2020']
month = ['06']
day = ['22']
site = ['01','02','03','04','05','06','07','08','09','10','11','12','13','14','15','16','17','18','19','20','21','22','23','24']
for i in year:
for j in month:
for k in day:
for l in site:
list.append("url name is described here")
Hier ist der Code. Stellen Sie beim Scraping einen bestimmten Zeitraum ** ein, um den Webserver des anderen Teilnehmers nicht zu belasten.
import requests
from time import sleep
from bs4 import BeautifulSoup
path_w = 'bs_2020_0622.txt'
list_errorlog = [] #Notieren Sie sich die Rennbahn, auf der es an diesem Tag vorerst kein Spiel gab.
for m in range(len(list)):
try:
res = requests.get(list[m])
res.encoding = res.apparent_encoding
res.raise_for_status()
with open(path_w, mode='a', encoding='utf-8') as f:
txt = res.text
soup = BeautifulSoup(txt)
f.writelines(soup.get_text())
sleep(5) #Nicht löschen!
except:
sleep(5) #Nicht löschen!
list_errorlog.append(list[m]+"is not existing")
print(list_errorlog)
In diesem Code
Ich mache. Dies ist in Ordnung, da das Referenzziel eine ziemlich einfache Struktur ist, aber für aufwendigere Seiten denke ich, dass es notwendig ist, die HTML-Tags gut einzugrenzen und zu kratzen.
Es ist ein gutes Gefühl. Beim nächsten Mal möchte ich diese Textdaten in ein DataFrame-Format konvertieren, das maschinelles Lernen ermöglicht. Schaben ist erstaunlich. (Obwohl es das Gefühl gibt, zu spät zur Mode zu kommen ..)
Recommended Posts