[PYTHON] J'ai appris le grattage à l'aide de sélénium pour créer un modèle de prédiction de courses de chevaux.

introduction

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

Scraping des lieux écrits en javascript (avec Selenimum)

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.

Qu'est-ce que le sélénium

«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

image.png

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

Ouvrir le lien

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é.

Définition de classe pour prendre les informations d'entrée

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

  1. La classe 'HorseList` contient les données souhaitées, récupérez-les donc comme suit.
elements = sample_driver.find_elements_by_class_name('HorseList')

image.png

  1. Extraire des informations telles que le nom du cheval et les cotes pour chaque tag «td».
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))

image.png

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.

Instancier et charger

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.

image.png

J'ai pu le sortir en toute sécurité.

À la fin

J'ai une autre compréhension du grattage.

Recommended Posts

J'ai appris le grattage à l'aide de sélénium pour créer un modèle de prédiction de courses de chevaux.
Un débutant en apprentissage automatique a essayé de créer un modèle de prédiction de courses de chevaux avec python
J'ai essayé d'obtenir une base de données sur les courses de chevaux en utilisant Pandas
J'ai créé un jeu ○ ✕ avec TensorFlow
J'ai essayé de ramper et de gratter le site de courses de chevaux Partie 2
J'ai fait un chronomètre en utilisant tkinter avec python
J'ai créé un éditeur de texte simple en utilisant PyQt
J'ai écrit un code qui dépasse le taux de récupération de 100% dans la prédiction des courses de chevaux en utilisant LightGBM (partie 2)
J'ai essayé de créer une expression régulière de "montant" en utilisant Python
J'ai essayé de créer une expression régulière de "temps" en utilisant Python
J'ai essayé de créer une expression régulière de "date" en utilisant Python
J'ai essayé de faire un processus d'exécution périodique avec Selenium et Python
J'ai essayé de créer une application todo en utilisant une bouteille avec python
J'ai créé une API Web
J'ai trouvé un moyen de créer un modèle 3D à partir d'une photo.
Je souhaite créer une application Web en utilisant React et Python flask
Je veux faire de matplotlib un thème sombre
J'ai essayé de faire un processus périodique avec CentOS7, Selenium, Python et Chrome
Je souhaite créer facilement un modèle de bruit
J'ai essayé le web scraping en utilisant python et sélénium
J'ai essayé d'automatiser le dépôt de 100 yens des courses de chevaux Rakuten (python / sélénium)
J'ai lu "Comment créer un laboratoire de piratage"
J'ai essayé de créer un BOT de traduction qui fonctionne avec Discord en utilisant googletrans
J'ai essayé d'implémenter diverses méthodes d'apprentissage automatique (modèle de prédiction) en utilisant scicit-learn
J'ai essayé de faire MAP rapidement une personne suspecte en utilisant les données d'adresse Geolonia
J'ai trouvé un moyen de créer un modèle 3D à partir d'une photo.0 Projection vers l'espace 3D
J'ai essayé de faire un "putain de gros convertisseur de littérature"
J'ai essayé d'héberger un exemple de modèle de Pytorch en utilisant TorchServe
J'ai créé un code pour convertir illustration2vec en modèle Keras
Je suis tombé sur l'utilisation de MoviePy, alors prenez note
J'étais accro au grattage avec Selenium (+ Python) en 2020
Comment créer un package Python à l'aide de VS Code
[Python] Je veux faire d'une liste imbriquée un taple
J'ai essayé de dessiner un diagramme de configuration à l'aide de diagrammes
[Git] J'ai essayé de faciliter la compréhension de l'utilisation de git stash en utilisant un exemple concret.
J'ai essayé de créer une commande de recherche de documents slack à l'aide de Kendra annoncée immédiatement à re: Invent 2019
J'ai essayé de créer une caméra de surveillance à détection de mouvement avec OpenCV en utilisant une caméra WEB avec Raspberry Pi
J'ai essayé d'utiliser PI Fu pour générer un modèle 3D d'une personne à partir d'une image
Je veux faire un changeur de voix en utilisant Python et SPTK en référence à un site célèbre
Osez remplir le formulaire sans utiliser de sélénium
J'ai essayé de mettre en œuvre le modèle de base du réseau neuronal récurrent
[Courses de chevaux] J'ai essayé de quantifier la force du cheval de course
Je veux créer un éditeur de blog avec l'administrateur de django
Je veux faire une macro de clic avec pyautogui (désir)
J'ai essayé d'héberger un modèle d'apprentissage en profondeur de TensorFlow à l'aide de TensorFlow Serving
J'ai fait une fonction pour vérifier le modèle de DCGAN
Je veux faire une macro de clic avec pyautogui (Outlook)
[Python scraping] J'ai essayé la recherche Google Top10 en utilisant Beautifulsoup et sélénium
J'ai fait un modèle VGG16 en utilisant TensorFlow (en chemin)
J'ai essayé d'automatiser [une certaine tâche] à l'aide d'une tarte à la râpe
Essayez de modéliser une distribution multimodale à l'aide de l'algorithme EM
[Introduction à Tensorflow] Comprendre correctement Tensorflow et essayer de créer un modèle
Je veux ajouter un joli complément à input () en python
J'ai essayé d'écrire dans un modèle de langage profondément appris
[Python] J'ai essayé de créer un programme simple qui fonctionne sur la ligne de commande en utilisant argparse
Commencez à Selenium en utilisant python
Flux de raclage des données de courses de chevaux
Web scraping avec Selenium (Python)
[5e] J'ai essayé de créer un certain outil de type Authenticator avec python