Dans la continuité de la dernière fois, je suis en train de faire un programme de prédiction en utilisant les données de courses de chevaux de netkeiba.com. J'ai appris le contenu du grattage en créant un programme de prédiction, je vais donc le résumer dans un rappel.
J'ai essayé d'obtenir une base de données sur les courses de chevaux en utilisant Pandas https://qiita.com/Fumio-eisan/items/1c1c429746a3a0add055
Veuillez voir cette vidéo pour le programme de prédiction des courses de chevaux lui-même. Il est expliqué très soigneusement et même les débutants peuvent le comprendre pleinement.
Analyse de données / apprentissage automatique à partir de la prédiction des courses de chevaux https://www.youtube.com/channel/UCDzwXAWu1zIfJuPTTZyWthw
La dernière fois, j'ai résumé ce que vous pouvez obtenir en utilisant pandas
lorsque vous obtenez des informations telles que la table de course, le nom du cheval, le cavalier de html
. Cela peut ne pas suffire. Pour la partie décrite en javascript
, il faut prendre un certain temps pour gratter.
«Selenium» est un framework pour automatiser les opérations du navigateur Web. Il semble qu'il puisse être utilisé avec Chrome
, FireFox
, ʻIE, etc. Cette fois, j'utiliserai
Chrome`.
http://chromedriver.chromium.org/downloads
Téléchargez votre version «Chrome» de «sélénium» ici.
from selenium.webdriver import Chrome, ChromeOptions
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
Voici comment ouvrir simplement l'URL.
options= ChromeOptions()
driver = Chrome(executable_path=r'(chromedriver.exe)Veuillez spécifier le chemin de',options=options)
driver.get(url)
Ici, le «chemin» du «pilote de chorome» est inclus. Si vous spécifiez path
of chorome driver
dans les paramètres de l'environnement système, il semble que vous n'ayez pas besoin d'écrire dans ce programme, mais même si vous l'avez défini, cela n'a pas fonctionné. Par conséquent, ʻexecutable_path` est spécifié.
Ci-dessous nous définissons une classe qui gratte les informations d'entrée. Je vais le mettre dans la trame de données de pandas
.
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()
Comme un point
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))
En décrivant chacune de ces balises «td», les informations décrites en «javascript» peuvent également être récupérées. De plus, «élément» est pour chaque cheval. En d'autres termes, chaque fois que le cheval change, «row» devient vide et les informations de la balise «td» peuvent être saisies à partir de zéro.
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'])#Course à laquelle vous voulez vous attendre_Entrez l'identifiant
st.shutuba_table
Si l'ID de course est netkeiba.com
, le numéro est inclus à la fin de l'URL de la table de course, veuillez donc retirer et coller uniquement le numéro de l'ID de course que vous voulez voir.
J'ai pu le sortir en toute sécurité.
J'ai une autre compréhension du grattage.
Recommended Posts