Ich mache vom letzten Mal an ein Vorhersageprogramm mit Pferderenndaten von netkeiba.com. Ich habe den Inhalt des Scrapings durch Erstellen eines Vorhersageprogramms gelernt, daher werde ich es in einer Erinnerung zusammenfassen.
Ich habe versucht, mit Pandas eine Pferderenn-Datenbank zu erstellen https://qiita.com/Fumio-eisan/items/1c1c429746a3a0add055
In diesem Video finden Sie das Vorhersageprogramm für Pferderennen. Es wird sehr sorgfältig erklärt und selbst Anfänger können es vollständig verstehen.
Datenanalyse / maschinelles Lernen beginnend mit der Vorhersage von Pferderennen https://www.youtube.com/channel/UCDzwXAWu1zIfJuPTTZyWthw
Ich habe das letzte Mal zusammengefasst, dass Sie "Pandas" verwenden können, um Informationen wie Rennplan, Pferdename und Jockey von "html" zu erhalten. Dies reicht möglicherweise nicht aus. Für den in "Javascript" beschriebenen Teil muss man sich etwas Zeit nehmen, um zu kratzen.
"Selen" ist ein Framework zur Automatisierung von Webbrowser-Vorgängen. Es scheint, dass es mit "Chrome", "FireFox", "IE" usw. verwendet werden kann. Dieses Mal werde ich "Chrome" verwenden.
http://chromedriver.chromium.org/downloads
Laden Sie hier Ihre "Chrome" -Version von "Selen" herunter.
from selenium.webdriver import Chrome, ChromeOptions
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
So öffnen Sie einfach die URL.
options= ChromeOptions()
driver = Chrome(executable_path=r'(chromedriver.exe)Bitte geben Sie den Pfad von an',options=options)
driver.get(url)
Hier ist der "Pfad" des "Choromtreibers" enthalten. Wenn Sie in den Systemumgebungseinstellungen den Pfad des Choromtreibers angeben, müssen Sie anscheinend nicht in dieses Programm schreiben, aber selbst wenn Sie es festgelegt haben, hat es nicht funktioniert. Daher gebe ich absichtlich "ausführbarer_Pfad" an.
Im Folgenden definieren wir eine Klasse, die Eintragsinformationen abkratzt. Ich werde es in den Datenrahmen von "Pandas" setzen.
from tqdm import tqdm_notebook as tqdm
import pandas as pd
import time
class ShutubaTable:
def __init__(self):
self.shutuba_table = pd.DataFrame()
def scrape_shutuba_table(self, race_id_list):
options= ChromeOptions()
driver = Chrome(executable_path=r'C:\Users\lllni\Documents\Python\20200528_keiba\chromedriver_win32\chromedriver.exe',options=options)
for race_id in tqdm(race_id_list):
url = 'https://race.netkeiba.com/race/shutuba.html?race_id=' + race_id
driver.get(url)
elements = sample_driver.find_elements_by_class_name('HorseList')
for element in elements:
tds = element.find_elements_by_tag_name('td')
row = []
for td in tds:
row.append(td.text)
if td.get_attribute('class') in ['HorseInfo', 'Jockey']:
href = td.find_element_by_tag_name('a').get_attribute('href')
row.append(re.findall(r'\d+', href)[0])
self.shutuba_table = self.shutuba_table.append(pd.Series(row, name=race_id))
time.sleep(1)
driver.close()
Als Punkt
elements = sample_driver.find_elements_by_class_name('HorseList')
for element in elements:
tds = element.find_elements_by_tag_name('td')
row = []
for td in tds:
row.append(td.text)
self.shutuba_table = self.shutuba_table.append(pd.Series(row, name=race_id))
Durch Beschreiben jedes dieser "td" -Tags können auch die in "Javascript" beschriebenen Informationen abgerufen werden. Außerdem ist "Element" für jedes Pferd. Mit anderen Worten, jedes Mal, wenn sich das Pferd ändert, wird "row" leer und die Informationen des "td" -Tags können von Grund auf neu eingegeben werden.
st = ShutubaTable1()
sample_driver = Chrome(executable_path=r'C:\Users\lllni\Documents\Python\20200528_keiba\chromedriver_win32\chromedriver.exe',options=options)
sample_driver.get(url
st.scrape_shutuba_table(['202005030211'])#Rennen, das Sie erwarten möchten_ID eingeben
st.shutuba_table
Wenn die Renn-ID "netkeiba.com" lautet, wird die Nummer am Ende der URL der Renntabelle angegeben. Nehmen Sie daher nur die Nummer der gewünschten Renn-ID heraus und fügen Sie sie ein.
Ich konnte es sicher herausnehmen.
Ich habe ein anderes Verständnis von Schaben.