Website-Scraping mit Beautiful Soup in Python

Über diesen Artikel

Wie ich bereits in Qiita geschrieben habe, habe ich [Code zum Scraping von Websites in Java] geschrieben (https://qiita.com/hiro0236/items/26414f5bee1999ff9199). Rückblickend ist es schwer zu sagen, dass der Code-Inhalt sauber ist, obwohl er die Anforderungen erfüllt. Es war mir peinlich, es zu sehen, also beschloss ich, es in Python umzuschreiben, also mach dir eine Notiz.

Es gibt viele ähnliche Artikel in Qiita, aber es ist ein Memorandum.

Über schöne Suppe

Ich habe beim Scraping mit Java eine Bibliothek namens jsoup verwendet. Dieses Mal werden wir ** Schöne Suppe ** verwenden.

BeautifulSoup ist eine Bibliothek zum Scraping von Python. Da Sie die Elemente auf der Seite mit der CSS-Auswahl extrahieren können, ist es praktisch, nur die gewünschten Daten auf der Seite zu extrahieren. Offiziell: https://www.crummy.com/software/BeautifulSoup/bs4/doc/

Da es sich um eine Python-Bibliothek handelt, wird sie mit pip installiert.

pip install beautifulsoup4

Anwendungsbeispiel

Wie in dem Artikel, den ich zuvor geschrieben habe, möchte ich das Datum, den Titel und die URL von "Notice" von der folgenden Seite extrahieren.

<body> 
 <div class="section"> 
  <div class="block"> 
   <dl>
    <dt>2019.08.04</dt> 
    <dd>
     <a href="http://www.example.com/notice/0003.html">Hinweis 3</a>
    </dd> 
    <dt>2019.08.03</dt> 
    <dd>
     <a href="http://www.example.com/notice/0002.html">Hinweis 2</a>
    </dd> 
    <dt>2019.08.02</dt> 
    <dd>
     <a href="http://www.example.com/notice/0001.html">Hinweis 1</a>
    </dd> 
   </dl>
  </div>
 </div>
</body>

Extrahieren Sie die Benachrichtigung mit dem folgenden Code und drucken Sie sie aus.

scraping.py


# -*- coding: utf-8 -*-
import requests
import sys
from bs4 import BeautifulSoup
from datetime import datetime as d

def main():

    print("Scraping Program Start")

    #Senden Sie eine GET-Anfrage an die angegebene URL, um den Inhalt der Seite abzurufen
    res=requests.get('http://www.example.com/news.html')

    #Analysieren Sie die abgerufene HTML-Seite in ein BeautifulSoup-Objekt
    soup = BeautifulSoup(res.text, "html.parser")

    #Extrahieren Sie das gesamte Blockklassenelement auf der Seite
    block = soup.find(class_="block")

    #Extrahieren Sie das dt-Element (Datum) und das dd-Element in der Blockklasse
    dt = block.find_all("dt")
    dd = block.find_all("dd")

    if(len(dt) != len(dd)):
        print("ERROR! The number of DTs and DDs didn't match up.")
        print("Scraping Program Abend")
        sys.exit(1)

    newsList = []

    for i in range(len(dt)):
        try:
            date = dt[i].text
            title = dd[i].find("a")
            url = dd[i].find("a").attrs['href']

            print("Got a news. Date:" + date +", title:" + title.string + ", url:" + url)

        except:
            print("ERROR! Couldn't get a news.")
            pass

    print("Scraping Program End")

if __name__ == "__main__":
    main()

Das erwartete Ergebnis bei der Ausführung des obigen Codes ist wie folgt.

Scraping Program Start
Got a news. Date:2019.08.04, title:Hinweis 3, url:http://www.example.com/notice/0003.html
Got a news. Date:2019.08.03, title:Hinweis 2, url:http://www.example.com/notice/0002.html
Got a news. Date:2019.08.04, title:Hinweis 1, url:http://www.example.com/notice/0001.html
Scraping Program End

abschließend

Verglichen mit dem letzten Mal, als ich in Javas Spring Boot geschrieben habe, ist es gut, dass die Codierungsmenge in Python überwältigend gering ist. Bitte weisen Sie auf inhaltliche Fehler hin.

Recommended Posts

Website-Scraping mit Beautiful Soup in Python
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
Krabbeltraining mit schöner Suppe
Schöne Suppe
[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
Schreiben Sie einen einfachen kopflosen Web-Scraping-Bot in Python mit Beautiful Soup 4
Erfolgreiches Schaben mit Selen
Scraping in Python (Vorbereitung)
Versuchen Sie es mit Python.
Scraping mit Python + PhantomJS
Meine schöne Suppe (Python)
Schaben mit kratzender Schale
Scraping: Website lokal speichern
Ich habe mit Python verschiedene Dinge ausprobiert: Schaben (Beautiful Soup + Selenium + PhantomJS) und morphologische Analyse
Schaben mit Selen [Python]
Beachten Sie, dass ich mich mit HTML in Beautiful Soup befasst habe
Scraping mit Python + PyQuery
[Python] Löschen Sie, indem Sie ein Tag mit Beautiful Soup angeben
Scraping von RSS mit Python
[Python] Praktisch schöne Suppe ~ Kratzen Sie die Triple Single Odds-Tabelle auf der offiziellen Website des Bootsrennens ~
Scraping von Google News-Suchergebnissen in Python (2) Verwenden Sie Beautiful Soup
Ich habe versucht, mit Python zu kratzen
Laden Sie Bilder automatisch mit Scraping herunter
Web Scraping mit Python + JupyterLab
Gesichtserkennung mit OpenCV von Python
Schaben mit Selen in Python
Schaben mit Selen + Python Teil 1
Schaben mit Chromedriver in Python
Implementieren Sie Unterbefehle mit Pythons Argparse
Festliches Scraping mit Python, Scrapy
Speichern Sie Bilder mit Web Scraping
Scraping Shizuokas offizielle GoToEat-Website
Scraping mit Selen in Python
Einfaches Web-Scraping mit Scrapy
Scraping mit Tor in Python
Arbeiten Sie mit Websites mit Python_Webbrowser
Kratzwettervorhersage mit Python
Schaben mit Selen + Python Teil 2
Rufen Sie die URL des Linkziels ab, indem Sie den Textsatz mit Python Scraping (Beautiful Soup) + XPath angeben
Ich habe versucht, mit Python zu kratzen
Web Scraping Anfänger mit Python
I-Town-Seite mit Selen abkratzen
[Python, Selenium, PhantomJS] Eine Geschichte beim Scrapen einer Website mit fauler Last