Ich fing an, Python zu lernen. Ich möchte mein Verständnis von Web Scraping vertiefen, also werde ich es auf meine eigene Weise zusammenfassen.
Ich werde es in diesem Artikel weglassen, aber wenn Sie ein verteiltes System entwickeln, müssen Sie es bis zu einem gewissen Grad verstehen. Persönlich empfehle ich dieses Buch zum Lernen. [Technologien, die Web-HTTP, URI, HTML und REST unterstützen (WEB + DB PRESS plus)](https://www.amazon.co.jp/Web%E3%82%92%E6%94%AF%E3 % 81% 88% E3% 82% 8B% E6% 8A% 80% E8% A1% 93-HTTP% E3% 80% 81URI% E3% 80% 81HTML% E3% 80% 81% E3% 81% 9D% E3 % 81% 97% E3% 81% A6REST-WEB-PRESS-plus / dp / 477142042 / ref = pd_lpo_14_t_2 / 357-3513078-6123409? = 4b55d259-ebf0-4306-905a-7762d1b93740 & pf_rd_r = 9KK4FFTSP6VV300G2BH3 & psc = 1 & refRID = 9KK4FFTSP6VV300G2BH3)
Dies ist das Hauptthema. In Büchern usw. wird es als Bibliothek beschrieben, die HTML analysiert. Überprüfen Sie auch die offizielle Website. Die Merkmale sind die folgenden drei Punkte.
Installieren Sie die BeautifulSoup-Bibliothek.
Führen Sie den folgenden Befehl in der interaktiven Shell aus.
> pip3 install BeautifulSoup4
Wenn Sie es importieren können, ist die Installation erfolgreich. bs4 ist eine Bibliothek.
>>> from bs4 import BeautifulSoup4
Dieses Mal werden wir den Titel und die URL der Nachrichtenliste von YAHOO! JAPAN extrahieren.
--Verwenden Sie Anfragen, um Site-Informationen zu erhalten. --Verwenden Sie BeautifulSoup, um die Elemente zu analysieren. --Verwenden Sie re, um das Element mit einem regulären Ausdruck abzurufen.
ScrapingSample.py
import requests
from bs4 import BeautifulSoup
import re
url = "https://www.yahoo.co.jp/"
#Erhalten Sie Site-Informationen mithilfe von Anfragen
result = requests.get(url)
#Elemente analysieren
bs = BeautifulSoup(result.text, "html.parser")
#Der Link ist"news.yahoo.co.jp/pickup"Holen Sie sich passende Artikel
news_list = bs.find_all(href=re.compile("news.yahoo.co.jp/pickup"))
#Extrahieren Sie Textattribute und href-Attribute aus den erfassten Elementen
for news in news_list:
print("{0} , {1}".format(news.getText(), news.get('href')))
3 Präfekturen haben Maskenkäufer freigelassen, https://news.yahoo.co.jp/pickup/6360522
USA diskutiert Wiederaufnahme des Atomtests US-Zeitung, https://news.yahoo.co.jp/pickup/6360527
Hell und dunkel NEU bei Subaru und Mitsubishi Corona, https://news.yahoo.co.jp/pickup/6360528
Anti-Malaria-Medikament erhöhtes Todesrisiko NEU, https://news.yahoo.co.jp/pickup/6360523
Eine Frau in den Vierzigern und Vierzigern brach vor Tagesanbruch ab, https://news.yahoo.co.jp/pickup/6360529
Maskenlieferung in Iwate Voice von heute NEU, https://news.yahoo.co.jp/pickup/6360521
Reitklub Prise Ich möchte vermeiden, zu töten, https://news.yahoo.co.jp/pickup/6360510
Rina Akiyama bringt einen zweiten Jungen zur Welt NEU, https://news.yahoo.co.jp/pickup/6360531
"NEU" wurde ebenfalls extrahiert, aber ich denke, es ist in Ordnung, es zu ersetzen, wenn es nicht erforderlich ist (nicht in dieser Implementierung enthalten).
Es war ein einfacher Inhalt, aber ich möchte mein Verständnis vertiefen, indem ich die offiziellen Dokumente lese.
Recommended Posts