[PYTHON] Holen Sie sich Informationen zu Bootsrennen mit Web Scraping

Einführung

Dieser Artikel ist eine interne Code-Erklärung der dreifachen Vorhersage-Website für Bootsrennen "Haben Sie heute eine gute Vorhersage?", die von mir erstellt und im Web veröffentlicht wurde. Es wird sein. Dieses Mal werde ich über Web Scraping zusammenfassen.

Welche Art von Informationen möchten Sie und woher erhalten Sie sie?

Ich möchte eine dreifache Vorhersage-Site für Bootsrennen durch maschinelles Lernen erstellen, daher möchte ich irgendwie vergangene Rennergebnisse als Trainingsdaten erhalten. Die Mindestinformation, die ich möchte, ist ...

Ist es? Alle anderen Informationen, die Sie möchten

Und so weiter. Die neueste offizielle Website von Boat Race enthält gut gepflegte Daten. Sie können auch auf frühere Rennergebnisse verweisen.

Dieses Mal möchte ich die Rennergebnisse erhalten, die die Quelle der Lerndaten von hier sind!

Verstehen Sie die URL-Struktur

Nach vorherigem Wissen über Bootsrennen finden Rennen auf einigen der 24 Rennstrecken grundsätzlich 365 Tage im Jahr statt. Nachdem ich die URL-Struktur verstanden hatte, entschied ich mich daher, Renninformationen für die gewünschte Anzahl von Tagen x 24 Rennstrecken zu erhalten. (Wenn das Rennen nicht ausgetragen wird, wird der Vorgang übersprungen.)

Ich habe die URL-Struktur verstanden und eine Box vorbereitet, die die URL wie folgt enthält. Im Code werden nur die Daten von 2020/6/22 erfasst. Wenn Sie jedoch die Liste von Jahr, Monat und Tag erhöhen, können Sie mit diesem Bild auch URLs anderer Daten erfassen.

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

Erhalten Sie Ergebnisse von Bootsrennen!

Hier ist der Code. Stellen Sie beim Scraping einen bestimmten Zeitraum ** ein, um den Webserver des anderen Teilnehmers nicht zu belasten.

import requests
from time import sleep
from bs4 import BeautifulSoup

path_w = 'bs_2020_0622.txt'
list_errorlog = [] #Notieren Sie sich die Rennbahn, auf der es an diesem Tag vorerst kein Spiel gab.

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) #Nicht löschen!
        
    except:
        sleep(5) #Nicht löschen!
        list_errorlog.append(list[m]+"is not existing")

print(list_errorlog)

In diesem Code

Ich mache. Dies ist in Ordnung, da das Referenzziel eine ziemlich einfache Struktur ist, aber für aufwendigere Seiten denke ich, dass es notwendig ist, die HTML-Tags gut einzugrenzen und zu kratzen.

Klicken Sie hier für Akquisitionsergebnisse

Es ist ein gutes Gefühl. Beim nächsten Mal möchte ich diese Textdaten in ein DataFrame-Format konvertieren, das maschinelles Lernen ermöglicht. Schaben ist erstaunlich. (Obwohl es das Gefühl gibt, zu spät zur Mode zu kommen ..) image.png

Schließlich

Ich bin Ihnen dankbar. Nun, ich konnte den Download ohne jedes Mal automatisch verarbeiten, ich konnte studieren und ich bin froh!

Recommended Posts

Holen Sie sich Informationen zu Bootsrennen mit Web Scraping
Bildersammlung mit Web Scraping
Einzeiliges Web-Scraping mit tse
Holen Sie sich Splunk Download-Link durch Scraping
Nogizaka46 Holen Sie sich Blog-Bilder durch Schaben
Holen Sie sich Wetterinformationen mit Python & Scraping
Web Scraping
Holen Sie sich iPad Wartung durch Scraping und benachrichtigen Sie Slack
Probieren Sie jetzt Web Scraping aus und erhalten Sie Lotterie-6-Daten
Holen Sie sich Qiitas "Gefällt mir" -Liste durch Schaben
Web-Scraped-Informationen werden mit OpenJtalk als Audio ausgegeben
Web Scraping (Prototyp)
Python-Anfänger bleiben beim ersten Web-Scraping stecken