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.
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!
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")
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.
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 ..)
Recommended Posts