Hallo. Ich arbeite als Buchhalter in einem IT-Unternehmen. Ich arbeite für ein IT-Unternehmen und möchte die Programmierung in meiner Backoffice-Arbeit nutzen ...! Ich habe versucht, Python mit diesem Gefühl zu berühren.
――Was können Sie mit Schaben machen? ――Wie funktioniert das Schaben?
** Alle Informationen können aus dem erfassten HTML extrahiert und verarbeitet werden **. Insbesondere können Sie dazu Scraping verwenden.
Grob gesagt ** Erfassung von Informationen auf der Website → Extraktion von Informationen → Ausgabe von Ergebnissen ** Es gibt 3 Schritte.
In diesem Artikel werde ich Ihnen zeigen, wie Sie mit Python kratzen. Dieses Mal habe ich die folgenden zwei verwendet.
--BeautifulSoup Bibliothek (Informationsextraktion, Ergebnisausgabe)
Insbesondere wird die folgende Verarbeitung durchgeführt.
Bei der Angabe von HTML-Elementen werden Methoden vom Typ "Suchen" und Methoden vom Typ "Auswählen" bereitgestellt. Dieses Mal werden wir uns darauf konzentrieren, Methoden zu finden.
--find (): Gibt nur ein Element zurück --findAll (): Gibt eine Liste von Elementen zurück, die die Bedingungen erfüllen
Schauen wir uns das Beispiel sofort an.
① Python herunterladen https://www.javadrive.jp/python/install/index1.html
② Installieren Sie schöne Suppe Es kann mit pip installiert werden.
$ pip install beautifulsoup4
③ Installation von urllib Dies kann auch mit pip installiert werden.
$ pip install urllib3
Ich werde versuchen, den Titel von unserer Homepage zu bekommen.
sample.py
import urllib.request #urllib verfügbar
from bs4 import BeautifulSoup #Schöne Suppe zur Verfügung
r = urllib.request.urlopen(‘https://www.is-tech.co.jp/’) #Informationen abrufen Holen Sie sich den HTML-Code der Seite, mit der Sie sich befassen möchten
html = r.read().decode('utf-8', 'ignore') #HTML utf-In 8 konvertieren und lesen
parser = "html.parser" #Geben Sie das Informationsziel in HTML an
soup = BeautifulSoup(html, parser) #Fertigstellung des BeautifulSoup-Objekts
title = soup.find("title").text #Geben Sie die im Titel-Tag enthaltenen Zeichen in HTML als Extraktionsziel an
print(title) #Zeigen Sie die im Titel-Tag enthaltenen Zeichen an
Ich konnte es extrahieren.
Angenommen, Sie haben eine fiktive Website wie die im Bild unten. Auf dieser Website werden auf jeder Seite Finanzinformationen fiktiver börsennotierter Unternehmen zusammengefasst. Die Verkäufe der letzten 3 Jahre werden für jedes Unternehmen extrahiert und an csv ausgegeben. Die URL lautet https://www.example.com/NNNN.
example.com/NNNN.html
<!DOCTYPE html>
</html>
<html>
<head>
<meta charset="utf-8">
<title>Finanzinformation</title>
</head>
<body>
<h1 class="company">Hogehoge Co., Ltd.</h1>
<table class="information">
<tr>
<td> </td>
<td>Erste Amtszeit</td>
<td>Vor 2 Begriffen</td>
<td>Vor 3 Begriffen</td>
</tr>
<tr>
<td>Umsatz</td>
<td>1,200 Millionen Yen</td>
<td>1,100 Millionen Yen</td>
<td>1,000 Millionen Yen</td>
</tr>
<tr>
<td>Ordentlicher Gewinn</td>
<td>240 Millionen Yen</td>
<td>220 Millionen Yen</td>
<td>200 Millionen Yen</td>
</tr>
<tr>
<td>Nettoeinkommen</td>
<td>120 Millionen Yen</td>
<td>110 Millionen Yen</td>
<td>100 Millionen Yen</td>
</tr>
</table>
</body>
Fügen Sie dem Beispiel des Titels, der zuvor von der Homepage extrahiert wurde, die folgende Anordnung hinzu.
sample2.py
import urllib.request
from bs4 import BeautifulSoup
import csv #CSV-bezogene Verarbeitung verfügbar
import time #Möglichkeit, die Verarbeitung anzuhalten
class Scraper:
def __init__(self, site, code): #Klasse erstellen
self.site = site
self.code = code
def scrape(self): #Erstellen Sie eine Instanz
url = str(self.site) + str(self.code) #Unternehmens-URL
r = urllib.request.urlopen(url)
html = r.read().decode('utf-8', 'ignore')
parser = "html.parser"
soup = BeautifulSoup(html, parser) #Fertigstellung des Suppenobjekts
company = soup.find("h1") #Firmennamen abrufen
if "Unternehmensinformationsseite nicht gefunden" in company.text: #Wenn es kein Unternehmen mit dem entsprechenden Wertpapiercode gibt, wird keine Verarbeitung durchgeführt.
pass
else: #Andernfalls
table = soup.find("table") #Tabelle mit Finanzinformationen für die letzten 3 Begriffe
data = table.findAll("td") #Geben Sie alle Tabellen mit td-Tags an
sales = data[5].text.split('Eine Million Yen')[0] #Umsatz in der Vorperiode(=6. td-Tag in Daten)
sales_two_years_ago = data[6].text.split('Eine Million Yen')[0] #Verkäufe vor zwei Semestern(=7. td-Tag in Daten)
sales_three_years_ago = data[7].text.split('Eine Million Yen')[0] #Verkäufe vor 3 Begriffen(=8. td-Tag in Daten)
row = [code, company, sales, sales_two_years_ago, sales_three_years_ago] #Zur Ausgabe an csv gelistet
with open('test.csv', 'a', newline ='') as f: #Export nach CSV
writer = csv.writer(f)
writer.writerow(row)
time.sleep(5) #Unterbrechen Sie die Verarbeitung für 5 Sekunden
source = "https://www.example.com/" #Gemeinsamer Teil der URL
for i in range(1000, 10000): #Iterative Verarbeitung für Wertpapiercodes 1000 bis 9999
Scraper(source, i).scrape()
Auf diese Weise können alle Unternehmensinformationen an csv ausgegeben werden.
Ich habe den Code erstellt, um Yahoo! Finance zu kratzen, um mein Geschäft zu automatisieren, aber die Nutzungsbedingungen haben ihn verboten ... Wenn Sie Scraping verwenden, ** überprüfen Sie bitte im Voraus die Nutzungsbedingungen der Website **. Abhängig von der Site kann die API für die Öffentlichkeit zugänglich sein, sodass es auch eine Möglichkeit gibt, die API für die Verarbeitung zu verwenden.
Recommended Posts