[PYTHON] Kratzen mit schöner Suppe in 10 Minuten

Einführung

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.

Ich habe für eine solche Person geschrieben

Inhaltsverzeichnis

――Was können Sie mit Schaben machen? ――Wie funktioniert das Schaben?

Was kann Schaben tun?

** Alle Informationen können aus dem erfassten HTML extrahiert und verarbeitet werden **. Insbesondere können Sie dazu Scraping verwenden.

Wie funktioniert das Schaben?

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.

  1. Holen Sie sich Informationen aus HTML und XML. (Dieser Artikel konzentriert sich auf HTML.)
  2. Senden Sie eine Anfrage an die URL, die gelöscht werden soll, und rufen Sie den HTML-Code ab.
  3. Erstellen Sie ein BeautifulSoup-Objekt aus dem erfassten HTML
  4. Geben Sie das HTML-Element an, das die Informationen enthält, die Sie extrahieren möchten.
  5. Der im angegebenen HTML-Element enthaltene Wert kann extrahiert werden.

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.

Vorbereitung

① 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

Beispielcode

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

Ergebnis

image2.png

Ich konnte es extrahieren.

Anwendungsbeispiel

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.

image3.png

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

Ergebnis

image1.png Auf diese Weise können alle Unternehmensinformationen an csv ausgegeben werden.

Hinweis

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

Kratzen mit schöner Suppe in 10 Minuten
Kratzen mit schöner Suppe
Tischkratzen mit schöner Suppe
Versuchen Sie es mit Python + Beautiful Soup
Mehrere Seiten mit Beautiful Soup verschrotten
Kratzen mit Python und schöner Suppe
Website-Scraping mit Beautiful Soup in Python
Schreiben Sie einen einfachen kopflosen Web-Scraping-Bot in Python mit Beautiful Soup 4
Schaben mit Selen in Python
Schaben mit Chromedriver in Python
Scraping mit Selen in Python
Scraping mit Tor in Python
Krabbeltraining mit schöner Suppe
Beachten Sie, dass ich mich mit HTML in Beautiful Soup befasst habe
Schöne Suppe
Scraping von Google News-Suchergebnissen in Python (2) Verwenden Sie Beautiful Soup
[Python] Eine Tabelle mit Beautiful Soup kratzen
Entfernen Sie unerwünschte HTML-Tags mit Beautiful Soup
Schaben mit Selen
Schaben mit Selen ~ 2 ~
Scraping mit Python
Scraping mit Python
Schöne Suppe Memo
Schöne Suppe verschüttet
Schaben mit Selen
Sortieren Sie Anime-Gesichter, indem Sie Anime-Charakterseiten mit Beautiful Soup und Selenium abkratzen
Erstellen Sie mit Vagrant in 5 Minuten eine Django-Umgebung
Erreichen Sie das Scraping mit Python & CSS Selector in 1 Minute
Erfolgreiches Schaben mit Selen
Scraping in Python (Vorbereitung)
Versuchen Sie es mit Python.
Lerne Pandas in 10 Minuten
Ich erhalte einen Importfehler mit Python Beautiful Soup
Scraping mit Python + PhantomJS
Meine schöne Suppe (Python)
Super Primer für Python-Erste Schritte mit Python3.5 in 3 Minuten
Ich war süchtig danach, 2020 mit Selen (+ Python) zu kratzen
Schaben mit kratzender Schale
Verstehe in 10 Minuten Selen
Selen läuft in 15 Minuten
Ich habe mit Python verschiedene Dinge ausprobiert: Schaben (Beautiful Soup + Selenium + PhantomJS) und morphologische Analyse
Schaben mit Selen [Python]
Scraping mit Python + PyQuery
[Python] Löschen Sie, indem Sie ein Tag mit Beautiful Soup angeben
Scraping von RSS mit Python
Versuchen Sie, COVID-19 Tokyo-Daten mit Python zu kratzen
Ich habe versucht, mit Python zu kratzen
Laden Sie Bilder automatisch mit Scraping herunter
Web Scraping mit Python + JupyterLab
Schaben mit Selen + Python Teil 1
[Python] Scraping in AWS Lambda
Betreiben Sie LibreOffice mit Python
Festliches Scraping mit Python, Scrapy
Debuggen mit pdb in Python
Speichern Sie Bilder mit Web Scraping
Umgang mit Sounds in Python
Kompromisse beim Web Scraping & Crawlen
Einfaches Web-Scraping mit Scrapy