[PYTHON] Obtenez des informations sur les matchs de course de bateaux avec le web scraping

introduction

Cet article est une explication du code interne du site de triple prédiction de course de bateaux "Aujourd'hui, avez-vous une bonne prédiction?" qui a été créé par moi-même et publié sur le Web. Ce sera. Cette fois, je vais résumer le web scraping.

Quel type d'informations souhaitez-vous et où les obtenez-vous?

Je veux créer un site de triple prédiction pour les courses de bateaux par apprentissage automatique, donc j'aimerais d'une manière ou d'une autre obtenir les résultats des courses passées comme données d'entraînement. L'information minimale que je veux est ...

Vraiment? Toute autre information que vous souhaitez

Etc. Le dernier site Web officiel de Boat Race contient des données bien tenues à jour et vous pouvez également vous référer aux résultats des courses passées.

Cette fois, j'aimerais obtenir les résultats de la course qui sont la source des données d'apprentissage d'ici!

Comprendre la structure de l'URL

En tant que connaissance préalable des courses de bateaux, les courses ont essentiellement lieu 365 jours par an dans certains des 24 hippodromes. Par conséquent, après avoir compris la structure de l'URL, j'ai décidé d'acquérir des informations de course pour le nombre de jours souhaité x 24 hippodromes. (Si la course n'est pas tenue, le processus sera ignoré)

J'ai saisi la structure de l'URL et préparé une boîte contenant l'URL comme suit. Dans le code, seules les données du 2020/6/22 sont acquises, mais si vous augmentez la liste des années, mois, jours, c'est une image que vous pouvez également acquérir des URL d'autres dates.

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")

Obtenez les résultats des courses de bateaux!

Voici le code. Lors du scraping, assurez-vous de définir une certaine période ** pour éviter de surcharger le serveur Web de l'autre partie.

import requests
from time import sleep
from bs4 import BeautifulSoup

path_w = 'bs_2020_0622.txt'
list_errorlog = [] #Notez l'hippodrome où il n'y a pas eu de match ce jour-là, pour le moment.

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) #N'effacez pas!
        
    except:
        sleep(5) #N'effacez pas!
        list_errorlog.append(list[m]+"is not existing")

print(list_errorlog)

Dans ce code

Je fais. C'est bien car la destination de référence est une structure assez simple, mais s'il s'agit d'une page plus élaborée, je pense qu'il est nécessaire de bien affiner les balises HTML et de gratter.

Cliquez ici pour les résultats d'acquisition

C'est un sentiment agréable. La prochaine fois, j'aimerais convertir ces données texte dans un format DataFrame qui permet l'apprentissage automatique. Eh bien, le grattage est incroyable. (Bien qu'il y ait un sentiment d'être en retard pour la mode ..) image.png

finalement

On dirait que vous êtes heureux .. Eh bien, j'ai pu traiter le téléchargement automatiquement sans à chaque fois, j'ai pu étudier, et j'en suis content!

Recommended Posts

Obtenez des informations sur les matchs de course de bateaux avec le web scraping
Collection d'images avec scraping Web
Grattage de bande sur une seule ligne avec du tsé
Obtenez le lien de téléchargement Splunk en grattant
Nogisaka 46 Obtenez des images de blog en grattant
Obtenez des informations météorologiques avec Python et le grattage
raclage Web
Obtenez la maintenance de l'iPad en grattant et en informant Slack
Essayez le Web scraping maintenant et obtenez des données de loterie 6
Obtenez la liste "J'aime" de Qiita en grattant
Les informations Web scrapées sont sorties sous forme audio avec OpenJtalk
grattage Web (prototype)
Les débutants en Python sont bloqués dans leur premier scraping Web