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.
Ü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.
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']
"""
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.
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
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
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?
@ 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