Python grattage Extraire l'environnement de course du site de courses de chevaux

Contexte

D'une manière ou d'une autre, je me suis intéressé aux courses de chevaux et à l'apprentissage automatique du ki. Le site auquel je faisais référence ne contenait pas ce que je voulais être gratté. Les informations sur les chevaux et les cavaliers sont importantes pour les courses de chevaux, mais l'ordre peut changer en fonction de l'environnement de course (terre ou gazon, si le temps est ensoleillé ou pluvieux, etc.). J'ai essayé de travailler dessus cette fois, donc je vais le résumer sous forme de mémorandum. Je vais omettre l'explication générale de html, scc, Beautiful Soup, etc. Vérifiez simplement comment l'utiliser.

Le site de courses de chevaux (netkeiba.com) lien a été ciblé. De plus, le contenu à écrire est l'élément dans le cadre rouge. 無題.png

Vérifier la cible

Vérifiez à quel élément correspond le contenu inclus dans le carré ci-dessus. Si c'est du chrome Menu le plus à droite → Autres outils → Outils de développement Vous pouvez vérifier le concept de la page Web en sélectionnant.

無題2.png

Exemple de code

La chaîne de caractères que vous souhaitez extraire est incluse dans l'élément span, alors accédez-y directement. Il existe plusieurs méthodes d'extraction et l'exemple de code ci-dessous peut être un détour.

race_condition_scraping.py


#Télécharger le HTML
import requests
#Obtenez des informations avec Beautiful Soup
from bs4 import BeautifulSoup 

#Spécifiez l'URL
r = requests.get("https://nar.netkeiba.com/?pid=race&id=p201942100701")
#HTML et analyseur(Méthode de lecture)Spécifier
soup = BeautifulSoup(r.content, "html.parser")
#Extraire l'élément span du html
tags = soup.find_all('span')
print(tags)
"""Sauts de ligne pour une visualisation facile
[<span>Présentation de ma page</span>, <span>Cheval préféré</span>, \
<span>S'identifier/Inscription des membres</span>, <span>(s)S'identifier</span>, \
<span>(s)Rejoindre gratuitement</span>, <span>(s)Se déconnecter</span>, \
<span>À 1400m/Temps: nuageux/Baba: Shige/Début: 10:30</span>, \
<span>7</span>, <span>6</span>, <span>4</span>, <span>8</span>, \
<span>3</span>, <span>1</span>, <span>2</span>, <span>8</span>, \
<span>6</span>, <span>5</span>, <span>7</span>, <span>5</span>] 
"""
#Notation d'inclusion lors de l'extraction"Météo"Est immuable, alors spécifiez la condition
names = [t.text for t in tags if "Météo" in t.text]
print(names)
"""
['À 1400m\xa0/\xa0 Météo: Nuageux\xa0/\xa0 Baba: Shige\xa0/\xa0 début: 10:30']
"""
#"\xa0/\xa0"OK si séparé par
weather_ = names[0].split('\xa0/\xa0')
print(weather_)
"""
['À 1400m', 'Temps: nuageux', 'Baba: Shige', 'Début: 10:30']
"""

Bonus: obtenir les informations principales

J'ai appris le code de raclage de @ akihiro199630, donc J'ai étudié. J'ai essayé d'explorer et de gratter le site de courses de chevaux, partie 1 J'ai fait référence au code dans l'article.

無題3.png

race_data_scraping.py


import requests
import lxml.html
import csv

#Spécifiez l'URL
URL = "https://nar.netkeiba.com/?pid=race&id=p201942100701" 
r = requests.get(URL)
r.encoding = r.apparent_encoding #Empêcher les caractères déformés
html = lxml.html.fromstring(r.text) #Données de chaîne de caractères acquises

rlt = [] #résultat

#Convertir de la chaîne HTML en type HtmlElement
# [(div id="race_main")→(div class)→(table width)→(tr)] →(td)Est rempli d'informations
for h in html.cssselect('#race_main > div > table > tr'):#Spécifiez l'emplacement de scraping avec le sélecteur CSS
    #Obtenir le numéro d'élément
    h_1 = h
    #Obtenez le contenu textuel du numéro d'élément
    h_2 = h_1.text_content()
    #nouvelle ligne("\n")Diviser en fonction de
    h_3 = h_2.split("\n")
    #Notation d'inclusion Exclut les éléments vides
    h_4 = [tag for tag in h_3 if tag != '']
    #Aucun temps n'est enregistré à la 1ère place
    if len(h_4) != 13:
        #8e 0 qui doit être ajouté de force
        h_4.insert(8,0)
    #Données de ligne dans la liste(Ajouter la liste)
    rlt.append(h_4) 

#Résultat d'extraction
print("h_1",h_1)
"""
h_1 <Element tr at 0x1c35a3d53b8>
"""
print("h_2",h_2)
"""

12
5
5
Super croisière

Homme 3
56.0
Culture d'Akimoto
1:34.2
7
12
459
(Urawa)Toshio Tomita
469( +1 )
"""
print("h_3",h_3)
"""Sauts de ligne pour une visualisation facile
h_3 ['', '12', '5', '5', 'Super croisière', '', 'Homme 3', '56.0', 'Culture d'Akimoto', \
'1:34.2', '7', '12', '459', '(Urawa)Toshio Tomita', '469( +1 )', '']
"""
print("h_4", h_4)
"""
h_4 ['12', '5', '5', 'Super croisière', 'Homme 3', '56.0', 'Culture d'Akimoto', '1:34.2', '7', '12', '459', '(Urawa)Toshio Tomita', '469( +1 )']
"""

#Enregistrer dans un fichier CSV
with open("result.csv", 'w', newline='') as f: 
    wrt = csv.writer(f) 
    wrt.writerow(rlt.pop(0)) #Rédacteur d'élément de 1ère ligne
    wrt.writerows(rlt) #Rédacteur des résultats d'extraction

Date de course bonus

Lorsque vous souhaitez refléter les performances passées du cheval de course dans le réseau neuronal Vous aurez besoin des dernières données de la veille de la course. Si ce point n'est pas pris en compte, les résultats après la date de la course seront reflétés.

J'ai donc écrit un code simple pour obtenir la date de course du site cible, je vais donc le résumer.

race_date.py


#Spécifiez l'URL
URL = "https://nar.netkeiba.com/?pid=race&id=p201942100701" 

#La date est importante car il faut remonter dans le passé à partir de la date de la course
#Diviser toutes les URL=p migration 2019 42 100701 → 2019 42 1007 01
#2019 42 1007 01 → Année?(Numéro du site de la course de chevaux?)Date numéro de course

#12 chiffres de la date de l'URL(201942100701)Extrait
url_12_ymd = URL[-12:]
print(url_12_ymd)
# 201942100701
url_12_y = url_12_ymd[:4]
print(url_12_y)
# 2019
url_12_md = url_12_ymd[6:10]
print(url_12_md)
# 1007
url_12_race = url_12_ymd[10:]
print(url_12_race)
# 01

Flux futur

Maintenant que j'ai extrait les informations nécessaires, je me demande si je devrais quantifier la da (saleté), les nuages et le poids, et les mettre dans le réseau neuronal. Si je suis motivé, j'aimerais continuer. Étant donné que le site (*) auquel j'ai fait référence peut obtenir des informations importantes autres que l'environnement de la course, Cela fonctionnerait-il si j'intégrais la couche ci-dessus dans le code du site?

Site de référence

@ akihiro199630 Je suis une personne qui travaille beaucoup sur le grattage. Dieu. Résumé du chapitre 1 de l'exploration et du grattage de Python Résumé du chapitre 4 de l'exploration et du grattage de Python [Scrapy] Corriger / traiter l'URL extraite

Recommended Posts

Python grattage Extraire l'environnement de course du site de courses de chevaux
Site de courses de chevaux Web scraping avec Python
Obtenez les performances passées des coureurs du site de courses de chevaux de grattage Python
Scraping depuis un site authentifié avec python
Flux de raclage des données de courses de chevaux
Grattez automatiquement le site reCAPTCHA tous les jours (1/7: construction de l'environnement python)
J'ai essayé de ramper et de gratter le site de courses de chevaux Partie 2
Récupération des données sur les courses de chevaux au Colaboratory
Extraire du texte d'images avec Python
[Python] Informations sur les lentilles de grattage sur price.com
Extraire des chaînes de fichiers avec Python
# 5 [python3] Extraire des caractères d'une chaîne de caractères
[Scraping] Scraping Python
[Python] (Line) Extraire les valeurs des images graphiques
Collecter des informations depuis Twitter avec Python (construction de l'environnement)
Selenium + WebDriver (Chrome) + Python | Création d'un environnement pour le scraping
Construction d'environnement explosif Python à partir de zéro (Mac)
Utilisez Python dans votre environnement depuis Win Automation
[Python] Flux du scraping Web à l'analyse des données
[Node-RED] Exécuter Python sur l'environnement virtuel Anaconda à partir de Node-RED [Anaconda] [Python]
De la construction d'environnement Python à la construction d'environnement virtuel avec anaconda
Extraire des données d'une page Web avec Python
Mémo de raclage Python
Scraping Python get_ranker_categories
Grattage avec Python
paramètres d'environnement python
Grattage avec Python
environnement windows python
Construction d'environnement (python)
Python racle eBay
sql à sql
Site d'apprentissage Python
Grattage Python get_title
construction d'environnement python
MeCab de Python
Python - Construction de l'environnement
Python: grattage partie 1
Construction de l'environnement Python
Scraping à l'aide de Python
Python: grattage, partie 2
Télécharger en masse des images à partir d'une URL de site spécifique avec python
Faire fonctionner mongoDB à partir de python dans l'environnement ubuntu ① Introduction de mongoDB
[Python] Extrayez l'ID vidéo de l'URL de la vidéo YouTube [Remarque]
[Python débutant] Extrayez la préfecture et la ville de l'adresse (3 lignes).
Construction de l'environnement de développement Python 2020 [De l'installation de Python à l'introduction à la poésie]
L'édition définitive du grattage python! (Site cible: grande caméra)
Procédure pour convertir un fichier python en exe à partir de la construction de l'environnement Ubunts
[Python] Extraire uniquement les nombres des listes et des chaînes de caractères