[Für Anfänger] Versuchen Sie Web Scraping mit Python

Annahme des Lesers

Es wird gesagt, dass es für Anfänger ist, aber ich bin auch ein Anfänger. Nachdem ich den einfachen Beispielcode für das Web-Scraping verstanden hatte, wollte ich ihm ein wenig Originalität verleihen, also habe ich es während der Untersuchung versucht. Wenn ich es gemäß dem Referenzcode des Web Scraping ausgeführt habe, konnte ich den Titel extrahieren und so weiter! Wenn es Level 1 ist, denke ich, dass es diesmal um Level 2 geht. Ich denke, es kann einige Missverständnisse geben. Wenn Sie also Vorschläge haben, kommentieren Sie diese bitte.

Einführung

Umgebung

python 3.7.3 Ich habe es mit Visual Studio Code entwickelt.

Bibliothek importieren

Python hat eine HTTP-Bibliothek namens "urlib2", die jedoch nicht einfach zu verwenden ist. Daher verwende ich die Bibliotheken "Requests" und "BeautifulSoup" für das Web-Scraping. Holen Sie sich die Webseite mit Anfragen und extrahieren Sie den HTML-Code mit Beautiful Soup.

Machen wir das!

Inhalte kratzen

Nikkei Business Elektronische Version https://business.nikkei.com/ Ich werde versuchen, die Überschrift und URL des neuen Artikels von zu erhalten.

Greifen Sie mit Google Chrome zu und drücken Sie F12, um auf die Entwicklertools zuzugreifen (Überprüfungsmodus).

Ich möchte wissen, welcher Teil des HTML-Codes der neue Artikelteil ist. Drücken Sie daher Strg + Umschalt + C, um den Cursor auf die Überschrift zu bewegen.

コメント 2020-03-31 212354.jpg コメント 2020-03-31 212442.jpg Dann stellte ich fest, dass sich der serialisierte Name des Artikels in dem Teil befindet, in dem die Klasse eine Kategorie ist. コメント 2020-03-31 212502.jpg コメント 2020-03-31 220521.jpg

Die Artikelüberschrift befindet sich im h3-Tag. Sie können auch sehen, dass sich die URL im a-Tag-Teil etwas oben befindet. Diese Beziehung ist in der folgenden Abbildung dargestellt. Später möchte ich es zusammen mit dem Programm erklären.

図1.png

Codebeschreibung

code.py


import requests
from bs4 import BeautifulSoup
import re

urlName = "https://business.nikkei.com"
url = requests.get(urlName)
soup = BeautifulSoup(url.content, "html.parser")

Stellen Sie eine http-Verbindung mit der Anforderungsbibliothek her und analysieren Sie HTML mit BeautifulSoup.

code.py


elems = soup.find_all("span")

Speichern Sie zunächst alle Span-Elemente in Elems.

code.py


for elem in elems: 
  try:
    string = elem.get("class").pop(0)
    if string in "category":
      print(elem.string)
      title = elem.find_next_sibling("h3")
      print(title.text.replace('\n',''))
      r = elem.find_previous('a')
      print(urlName + r.get('href'), '\n')
  except:
    pass

Nehmen Sie als Nächstes den Klassennamen aus dem span-Element, um festzustellen, ob es sich um eine Kategorie handelt. Wenn die Klasse eine Kategorie ist, wird der Text des Seriennamens mit .string extrahiert.

Der nächste Schritt besteht dann darin, den Inhalt der Überschrift abzurufen. Die Überschrift befand sich im h3-Tag. Das h3-Tag befand sich in derselben Tiefe direkt darunter. Verwenden Sie also find_next_sibling (), um h3 in derselben Tiefe nach dem Element zu finden.

図2.png

Der extrahierte Text kann auch ein Bild enthalten und Zeilenumbrüche enthalten oder nicht. Daher habe ich ihn gelöscht, wenn dies der Fall war.

Zum Schluss möchte ich die URL extrahieren. Es war früher dieselbe Tiefe, aber das a-Tag ist eine Tiefe höher. Daher habe ich find_previous () verwendet, um nach dem a-Tag zu suchen, und die get-Methode verwendet, um den angegebenen Attributwert des Elements zum Abrufen der href-Adresse abzurufen.

図3.png

Nachfolgend einige Ausführungsergebnisse.

Yuka Ikematsus Direktflug von New York
Ein riesiges Krankenhausschiff der US Navy fährt nach New York. Immer noch nicht genug Betten
https://business.nikkei.com/atcl/gen/19/00119/033100011/

Yohei Ichishimas Silicon Valley Insai ...
Leben in einer "20% Nachfragewirtschaft" Post-Corona-Denken und Bewegen der US-Restaurantindustrie
https://business.nikkei.com/atcl/gen/19/00137/033100002/

Muneaki Hashimoto blickt der Medizin und der medizinischen Versorgung voraus
Yoshi Shiono und Präsident Teshirogi verzichten in Zusammenarbeit mit China Heian Insurance auf Verschwörung
https://business.nikkei.com/atcl/gen/19/00110/033100012/ 

Auf diese Weise konnte ich es bekommen.

schließlich

Ich lerne noch und frage mich, ob es Missverständnisse oder bessere Wege gibt. Ich möchte es üben und gleichzeitig mein Verständnis nach und nach vertiefen.

Recommended Posts

[Für Anfänger] Versuchen Sie Web Scraping mit Python
Web Scraping für Anfänger in Python (1)
Versuchen Sie es mit Python.
WEB-Scraping mit Python (für persönliche Notizen)
Web Scraping mit Python + JupyterLab
Web Scraping Anfänger mit Python
Web Scraping für Anfänger in Python (1) Verbesserte Version
Datenanalyse zur Verbesserung von POG 1 ~ Web Scraping mit Python ~
Web-Scraping für Anfänger mit Python (4) --2 Scraping auf Cloud Shell
Versuchen Sie es mit Python + Beautiful Soup
Web Scraping mit Python Erster Schritt
Ich habe versucht, WebScraping mit Python.
Scraping mit Python
Scraping mit Python
(Für Anfänger) Versuchen Sie, mit Django eine einfache Web-API zu erstellen
INSERT in MySQL mit Python [Für Anfänger]
Erste Schritte mit Python Web Scraping Practice
[Persönlicher Hinweis] Scraping von Webseiten in Python3
Pferderennseite Web Scraping mit Python
Erste Schritte mit Python Web Scraping Practice
Versuchen Sie HTML-Scraping mit der Python-Bibliothek
[Für Anfänger] Web-Scraping mit Python "Greifen Sie auf die URL auf der Seite zu, um den Inhalt abzurufen."
[Python] Bilder mit OpenCV lesen (für Anfänger)
WebApi-Erstellung mit Python (CRUD-Erstellung) Für Anfänger
Üben des Web-Scrapings mit Python und Selen
Einfaches Web-Scraping mit Python und Ruby
Vorbereitung zum Schaben mit Python [Schokoladengeschmack]
Scraping in Python (Vorbereitung)
Scraping mit Python + PhantomJS
Python Lehrbuch für Anfänger
Schaben mit Selen [Python]
Scraping mit Python + PyQuery
OpenCV für Python-Anfänger
Scraping von RSS mit Python
Führen Sie das WEB-Scraping regelmäßig mit AWS-Lambda + Python + Cron aus
Kausales Denken und kausale Suche von Python (für Anfänger)
~ Tipps für Python-Anfänger mit Liebe von Pythonista ① ~
Web Scraping mit Python (Wettervorhersage)
Web Scraping mit Python (Aktienkurs)
~ Tipps für Python-Anfänger mit Liebe von Pythonista ② ~
[Einführung für Anfänger] Umgang mit MySQL mit Python
Ich habe versucht, mit Python zu kratzen
Schaben mit Selen in Python
Schaben mit Selen + Python Teil 1
Lernablauf für Python-Anfänger
Festliches Scraping mit Python, Scrapy
Probieren Sie die Python-Ausgabe mit Haxe 3.2 aus
Speichern Sie Bilder mit Web Scraping
Scraping mit Tor in Python
Web-API mit Python + Falcon
Python #Funktion 2 für Super-Anfänger
WEB Scraping mit Python und versuchen, aus Bewertungen eine Wortwolke zu machen
Web Scraping mit Selenium (Python)
Kratzwettervorhersage mit Python
Versuchen Sie, Python mit Try Jupyter auszuführen
Grundlegende Python-Grammatik für Anfänger
Schaben mit Selen + Python Teil 2