Python-Scraping Extrahieren Sie die Rennumgebung von der Pferderennseite

Hintergrund

Irgendwie interessierte ich mich für Pferderennen und Ki Machine Learning. Die Site, auf die ich mich bezog, enthielt nicht das, was ich kratzen wollte. Informationen wie Pferde und Reiter sind wichtig für Pferderennen, aber es wird angenommen, dass sich die Reihenfolge abhängig von der Rennumgebung ändert (Schmutz oder Rasen, ob das Wetter sonnig oder regnerisch ist usw.). Ich habe diesmal versucht, daran zu arbeiten, deshalb werde ich es als Memorandum zusammenfassen. Ich werde die Gliederungserklärung von HTML, Scc, Schöne Suppe usw. weglassen. Überprüfen Sie einfach, wie es verwendet wird.

Die Pferderennseite (netkeiba.com) Link wurde als Ziel ausgewählt. Der zu skriptende Inhalt ist auch das Element im roten Rahmen. 無題.png

Ziel überprüfen

Überprüfen Sie, welchem Element der im obigen Quadrat enthaltene Inhalt entspricht. Wenn es Chrom ist Menü ganz rechts → Andere Tools → Entwicklertools Sie können das Konzept der Webseite überprüfen, indem Sie auswählen.

無題2.png

Beispielcode

Die Zeichenfolge, die Sie extrahieren möchten, ist im span-Element enthalten. Greifen Sie also direkt darauf zu. Es gibt verschiedene Extraktionsmethoden, und der folgende Beispielcode kann ein Umweg sein.

race_condition_scraping.py


#Laden Sie HTML herunter
import requests
#Holen Sie sich Informationen mit Beautiful Soup
from bs4 import BeautifulSoup 

#Geben Sie die URL an
r = requests.get("https://nar.netkeiba.com/?pid=race&id=p201942100701")
#HTML und Parser(Lesemethode)Angeben
soup = BeautifulSoup(r.content, "html.parser")
#Extrahieren Sie das span-Element aus HTML
tags = soup.find_all('span')
print(tags)
"""Zeilenumbrüche für eine einfache Anzeige
[<span>Einführung meiner Seite</span>, <span>Lieblingspferd</span>, \
<span>Einloggen/Mitgliedsregistrierung</span>, <span>(s)Einloggen</span>, \
<span>(s)Kostenlos anmelden</span>, <span>(s)Ausloggen</span>, \
<span>Da 1400m/Wetter: bewölkt/Baba: Shige/Start: 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>] 
"""
#Einschlussnotation Beim Extrahieren"Wetter"Ist unveränderlich, geben Sie die Bedingung an
names = [t.text for t in tags if "Wetter" in t.text]
print(names)
"""
['Da 1400m\xa0/\xa0 Wetter: Bewölkt\xa0/\xa0 Baba: Shige\xa0/\xa0 Start: 10:30']
"""
#"\xa0/\xa0"OK, wenn durch getrennt
weather_ = names[0].split('\xa0/\xa0')
print(weather_)
"""
['Da 1400m', 'Wetter: bewölkt', 'Baba: Shige', 'Start: 10:30']
"""

Bonus: Erhalten Sie Hauptinformationen

Ich habe den Scraping-Code von @ akihiro199630 gelernt, also Ich studierte. Ich habe versucht, die Pferderennseite Teil 1 zu kriechen und zu kratzen Ich habe auf den Code im Artikel verwiesen.

無題3.png

race_data_scraping.py


import requests
import lxml.html
import csv

#Geben Sie die URL an
URL = "https://nar.netkeiba.com/?pid=race&id=p201942100701" 
r = requests.get(URL)
r.encoding = r.apparent_encoding #Verhindern Sie verstümmelte Zeichen
html = lxml.html.fromstring(r.text) #Erfasste Zeichenfolgendaten

rlt = [] #Ergebnis

#Konvertieren Sie von einer HTML-Zeichenfolge in einen HtmlElement-Typ
# [(div id="race_main")→(div class)→(table width)→(tr)] →(td)Ist voller Informationen
for h in html.cssselect('#race_main > div > table > tr'):#Geben Sie den Scraping-Ort mit der CSS-Auswahl an
    #Elementnummer abrufen
    h_1 = h
    #Holen Sie sich den Textinhalt der Elementnummer
    h_2 = h_1.text_content()
    #Neue Zeile("\n")Teilen basierend auf
    h_3 = h_2.split("\n")
    #Einschlussnotation Schließt leere Elemente aus
    h_4 = [tag for tag in h_3 if tag != '']
    #Auf dem 1. Platz wird keine Zeit aufgezeichnet
    if len(h_4) != 13:
        #8. 0, die zwangsweise hinzugefügt werden muss
        h_4.insert(8,0)
    #Zeilendaten in der Liste(Liste hinzufügen)
    rlt.append(h_4) 

#Extraktionsergebnis
print("h_1",h_1)
"""
h_1 <Element tr at 0x1c35a3d53b8>
"""
print("h_2",h_2)
"""

12
5
5
Super Kreuzfahrt

Männlich 3
56.0
Akimoto-Anbau
1:34.2
7
12
459
(Urawa)Toshio Tomita
469( +1 )
"""
print("h_3",h_3)
"""Zeilenumbrüche für eine einfache Anzeige
h_3 ['', '12', '5', '5', 'Super Kreuzfahrt', '', 'Männlich 3', '56.0', 'Akimoto-Anbau', \
'1:34.2', '7', '12', '459', '(Urawa)Toshio Tomita', '469( +1 )', '']
"""
print("h_4", h_4)
"""
h_4 ['12', '5', '5', 'Super Kreuzfahrt', 'Männlich 3', '56.0', 'Akimoto-Anbau', '1:34.2', '7', '12', '459', '(Urawa)Toshio Tomita', '469( +1 )']
"""

#In CSV-Datei speichern
with open("result.csv", 'w', newline='') as f: 
    wrt = csv.writer(f) 
    wrt.writerow(rlt.pop(0)) #1. Reihe Item Writerow
    wrt.writerows(rlt) #Extraktionsergebnisschreiber

Bonus-Renntermin

Wenn Sie die vergangene Leistung des Rennpferdes im neuronalen Netzwerk widerspiegeln möchten Sie benötigen die neuesten Daten vom Tag vor dem Rennen. Wenn dieser Punkt nicht berücksichtigt wird, werden die Ergebnisse nach dem Renntermin wiedergegeben.

Also habe ich einen einfachen Code geschrieben, um das Startdatum der Zielseite zu ermitteln, also werde ich es zusammenfassen.

race_date.py


#Geben Sie die URL an
URL = "https://nar.netkeiba.com/?pid=race&id=p201942100701" 

#Das Datum ist wichtig, da es notwendig ist, vom Renntermin in die Vergangenheit zurückzukehren
#Teilen Sie alle URLs=p Migration 2019 42 100701 → 2019 42 1007 01
#2019 42 1007 01 → Jahr?(Nummer des Pferderennens?)Datum der Startnummer

#12 Ziffern des Datums von der URL(201942100701)Extrakt
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

Zukünftiger Fluss

Nachdem ich die erforderlichen Informationen extrahiert habe, frage ich mich, ob ich das Da (Schmutz), die Wolken und das Gewicht quantifizieren und in das neuronale Netzwerk einfügen soll. Wenn ich motiviert bin, möchte ich weitermachen. Da die Site (*), auf die ich verwiesen habe, andere wichtige Informationen als die Rennumgebung erhalten kann, Würde es funktionieren, wenn ich den obigen Mantel in den Code auf der Website integrieren würde?

Referenzseite

@ akihiro199630 Ich bin eine Person, die viel am Schaben arbeitet. Gott. Python Crawling & Scraping Kapitel 1 Zusammenfassung Python Crawling & Scraping Kapitel 4 Zusammenfassung [Scrapy] Korrigieren / Verarbeiten der extrahierten URL

Recommended Posts

Python-Scraping Extrahieren Sie die Rennumgebung von der Pferderennseite
Pferderennseite Web Scraping mit Python
Holen Sie sich vergangene Leistung von Läufern von Python Scraping Pferderennen Website
Scraping von einer authentifizierten Site mit Python
Datenrabatfluss für Pferderennen
Kratzen Sie die reCAPTCHA-Site jeden Tag automatisch ab (1/7: Aufbau der Python-Umgebung)
Ich habe versucht, den Pferderennplatz Teil 2 zu kriechen und abzukratzen
Scrapping von Pferderenndaten im Colaboratory
Extrahieren Sie mit Python Text aus Bildern
[Python] Informationen zu Scraping-Objektiven von price.com
Extrahieren Sie mit Python Zeichenfolgen aus Dateien
# 5 [python3] Extrahiert Zeichen aus einer Zeichenfolge
[Scraping] Python-Scraping
[Python] (Linie) Extrahieren Sie Werte aus Diagrammbildern
Sammeln von Informationen von Twitter mit Python (Umgebungskonstruktion)
Selen + WebDriver (Chrome) + Python | Erstellen einer Umgebung zum Scraping
Aufbau einer explosiven Python-Umgebung ab Null (Mac)
Verwenden Sie Python in Ihrer Umgebung von Win Automation
[Python] Fluss vom Web-Scraping zur Datenanalyse
[Node-RED] Führen Sie Python in einer virtuellen Anaconda-Umgebung von Node-RED aus [Anaconda] [Python]
Von der Python-Umgebungskonstruktion zur virtuellen Umgebungskonstruktion mit Anaconda
Extrahieren Sie mit Python Daten von einer Webseite
Python-Scraping-Memo
Python Scraping get_ranker_categories
Scraping mit Python
Python-Umgebungseinstellungen
Scraping mit Python
Python Windows-Umgebung
Umgebungskonstruktion (Python)
Python Scraping eBay
SQL zu SQL
Python-Lernseite
Python Scraping get_title
Python-Umgebungskonstruktion
MeCab von Python
Python - Umgebungskonstruktion
Python: Scraping Teil 1
Aufbau einer Python-Umgebung
Scraping mit Python
Python: Scraping Teil 2
Massen-Download-Bilder von einer bestimmten Site-URL mit Python
Betreiben Sie mongoDB von Python in einer Ubuntu-Umgebung. ① Einführung von mongoDB
[Python] Extrahiere die Video-ID aus der YouTube-Video-URL [Hinweis]
[Python-Anfänger] Extrahieren Sie die Präfektur und die Stadt aus der Adresse (3 Zeilen).
Aufbau der Python-Entwicklungsumgebung 2020 [Von der Python-Installation bis zur Einführung in die Poesie]
Die endgültige Ausgabe von Python Scraping! (Zielort: Große Kamera)
Verfahren zum Konvertieren einer Python-Datei in eine Exe aus der Ubunts-Umgebungskonstruktion
[Python] Extrahieren Sie nur Zahlen aus Listen und Zeichenfolgen