Pferderennseite Web Scraping mit Python

Wie man mit Python Web-Scrape macht

Über diesen Artikel

Ich weiß nicht, wie viele Biere es sein werden, aber ich werde beschreiben, wie die Informationen auf der Pferderennseite in das CSV-Format gebracht werden. Die verwendete Sprache ist Python 3.6 und die Umgebung ist Jupyter Notebook.

Ich bin neu in Python und frage mich, ob es redundanten Code oder intelligentere Techniken gibt. Diesmal besteht der Zweck jedoch nicht darin, schönen Code zu erstellen. Daher ist es gut, ihn als zukünftige Verbesserung zu erkennen.

Schrottziel

Extrahieren Sie Informationen von den folgenden Websites. Site-Name: netkeiba.com (https://www.netkeiba.com/?rf=logo)

# Vorkenntnisse zur URL-Generierung

Auf netkeiba.com gibt es für jedes Rennen eine Webseite. Die URL dieser Webseite wird durch die folgenden Regeln bestimmt.

https://race.netkeiba.com/race/result.html?race_id=開催年+競馬場コード+開催回数+日数+レース数+&rf=race_list

Nehmen wir das Beispiel des ersten Rennens am 4. Tag von Tokio am 3. Mai 2020 auf der Rennstrecke von Tokio.

Name der Rennbahn Rennbahncode
Sapporo 01
Hakodate 02
Fukushima 03
Niigata 04
Tokio 05
Nakayama 06
Chukyo 07
Kyoto 08
Hanshin 09
Ogura 10

Wenn das Obige angewendet wird, wird es wie folgt. https://race.netkeiba.com/race/result.html?race_id=202005020401&rf=race_list

URL-Generierung-Informationserfassung (Code)

Dies ist der Code von der URL-Generierung bis zur Informationserfassung.

web1.ipynb


# -*- coding: utf-8 -*- 
import csv
import requests
import codecs
import time
from datetime import datetime as dt
from collections import Counter
from bs4 import BeautifulSoup
import re
import pandas

race_date ="2020"
race_course_num="06"
race_info ="03"
race_count ="05"
race_no="01"
url = "https://race.netkeiba.com/race/result.html?race_id="+race_date+race_course_num+race_info+race_count+race_no+"&rf=race_list"

#Holen Sie sich die Daten der entsprechenden URL im HTML-Format
race_html=requests.get(url)
race_html.encoding = race_html.apparent_encoding  
race_soup=BeautifulSoup(race_html.text,'html.parser')
print(url)

Nachdem Sie die obigen Schritte ausgeführt haben, wird die generierte URL angezeigt.

Tabelle abrufen (Code)

Dies ist der Code, um die Tabelle aus dem erhaltenen HTML-Text abzurufen. (Zum obigen Code hinzugefügt)

web1.ipynb


#Holen Sie sich und speichern Sie nur den Renntisch
HorseList = race_soup.find_all("tr",class_="HorseList")

#Formgebung des Renntisches
#Erstellen Sie eine Liste mit der Renntabelle
Race_lists = []
#Anzahl der Zeilen in der Tabelle=15("Reihenfolge der Ankunft,Rahmen,Pferdenummer,Pferdename,Sexuelles Alter,Gewicht,Reiter,Zeit,Unterschied,Beliebt,Gewinnchancen,Nach 3F,Eckübergabe,stabil,Pferdegewicht(Erhöhen verringern))
Race_row = 15

#Zählen Sie die Anzahl der Läufer
uma_num = len(HorseList)

#Entfernen Sie unnötige Zeichenfolgen und speichern Sie sie in der Liste
for i in range(uma_num):
    Race_lists.insert(1+i, HorseList[i])
    
    Race_lists[i] = re.sub(r"\n","",str(Race_lists[i]))
    Race_lists[i] = re.sub(r" ","",str(Race_lists[i]))
    Race_lists[i] = re.sub(r"</td>",",",str(Race_lists[i]))
    Race_lists[i] = re.sub(r"<[^>]*?>","",str(Race_lists[i]))
    Race_lists[i] = re.sub(r"\[","",str(Race_lists[i]))
    Race_lists[i] = re.sub(r"\]","",str(Race_lists[i]))
    print(Race_lists[i])

Wenn das obige ausgeführt wird, ist die Ausgabe wie folgt. 1,1,1, Red Calm, Female 3,54,0, Satoshi Ishibashi, 1: 25,7 ,, 3,4,6,37,1 ,, Takeshi Miura Okumura, 512 (-4), 2,6,12, Sanky West, weiblich 3,54,0, Iwabe, 1: 25,7, Hana, 2,3,2,36,5 ,, Miura Kayano, 442 (-8), (Unten weggelassen)

Andere Tabellen können auf ähnliche Weise mit einigen Unterschieden erhalten werden.

Speichern im CSV-Format (Code)

Nachdem Sie die gewünschten Informationen erhalten haben, speichern Sie diese als CSV-Datei. (Zum obigen Code hinzugefügt)

web1.ipynb


#csv öffnen
out=codecs.open("./this_race_table"+race_date+race_course_num+race_info+race_count+race_no+".csv","w")
#Dieses Mal wird der Spaltenname der Übersichtlichkeit halber in CSV beschrieben..(Beachten Sie, dass Sie es nicht wirklich brauchen)
out.write("Reihenfolge der Ankunft,Rahmen,Pferdenummer,Pferdename,Sexuelles Alter,Gewicht,Reiter,Zeit,Unterschied,Beliebt,Gewinnchancen,Nach 3F,Eckübergabe,stabil,Pferdegewicht(Erhöhen verringern)\n")

#Füllen Sie den Inhalt der Renntabellenliste in csv aus
for i in range(uma_num):
    out.write(str(Race_lists[i]+"\n")) 
    
out.close()

Durch Ausführen der obigen Schritte wird eine CSV in dem Ordner erstellt, in dem die Quellcodedatei vorhanden ist.

Dies ist das Ende des Schabens.

Andere

Bitte beachten Sie, dass Web Scraping (Crawler) illegal sein kann, wie im Fall Librahack dargestellt.

Recommended Posts

Pferderennseite Web Scraping mit Python
Web Scraping mit Python + JupyterLab
Web Scraping Anfänger mit Python
Web Scraping mit Python Erster Schritt
Ich habe versucht, WebScraping mit Python.
Scraping mit Python
Scraping mit Python
WEB-Scraping mit Python (für persönliche Notizen)
Erste Schritte mit Python Web Scraping Practice
[Persönlicher Hinweis] Scraping von Webseiten in Python3
Erste Schritte mit Python Web Scraping Practice
Scraping von einer authentifizierten Site mit Python
Üben des Web-Scrapings mit Python und Selen
Einfaches Web-Scraping mit Python und Ruby
[Für Anfänger] Versuchen Sie Web Scraping mit Python
Holen Sie sich vergangene Leistung von Läufern von Python Scraping Pferderennen Website
Versuchen Sie es mit Python.
Schaben mit Selen [Python]
Scraping mit Python + PyQuery
Scraping von RSS mit Python
Führen Sie das WEB-Scraping regelmäßig mit AWS-Lambda + Python + Cron aus
Web Scraping mit Python (Wettervorhersage)
Web Scraping mit Python (Aktienkurs)
Ich habe versucht, mit Python zu kratzen
Datenanalyse zur Verbesserung von POG 1 ~ Web Scraping mit Python ~
Schaben mit Selen in Python
Schaben mit Selen + Python Teil 1
Schaben mit Chromedriver in Python
Festliches Scraping mit Python, Scrapy
Speichern Sie Bilder mit Web Scraping
Scraping mit Selen in Python
Schnelles Web-Scraping mit Python (unterstützt das Laden von JavaScript)
Einfaches Web-Scraping mit Scrapy
Scraping mit Tor in Python
Web-API mit Python + Falcon
Python-Anfänger bleiben beim ersten Web-Scraping stecken
Datenrabatfluss für Pferderennen
Web Scraping mit Selenium (Python)
Kratzwettervorhersage mit Python
Schaben mit Selen + Python Teil 2
Webanwendung mit Python + Flask ② ③
Ich habe versucht, mit Python zu kratzen
Optimieren Sie die Websuche mit Python
Webanwendung mit Python + Flask ④
Webcrawlen, Web-Scraping, Zeichenerfassung und Speichern von Bildern mit Python
Ich habe versucht, den Pferderennplatz Teil 2 zu kriechen und abzukratzen
Versuchen Sie es mit Python + Beautiful Soup
Scraping mit Node, Ruby und Python
Scraping mit Selen in Python (Basic)
Scraping mit Python, Selen und Chromedriver
Erste Schritte mit Python-Webanwendungen
Scraping von Alexas Web Rank mit pyQuery
Kratzen mit Python und schöner Suppe
Überwachen Sie Python-Webanwendungen mit Prometheus
Holen Sie sich Web-Screen-Capture mit Python
Lassen Sie uns mit Python Image Scraping durchführen