Scraping von Google News-Suchergebnissen in Python (2) Verwenden Sie Beautiful Soup

Wenn Sie nach Schlüsselwörtern oder Sätzen suchen, an denen Sie interessiert sind, zeigt Google News 100 Artikel an, die nach Relevanz, Veröffentlichungsdatum und -zeit geordnet sind. Um herauszufinden, wie Hit-Food-Produkte entstanden sind, suchen Sie in früheren Nachrichten nach Stichwörtern und Sätzen, die wahrscheinlich mit dem Hit-Food zusammenhängen, und überprüfen Sie den Grad des Anstiegs des Interesses zum Zeitpunkt dieser Pressemitteilungen bei Google Trends. Auf diese Weise können wir den Prozess untersuchen, der zum Treffer führt. Es kann auch verwendet werden, um Themen zu erfassen, die zu neuen Treffern führen. Im vorherigen Bericht habe ich vorgestellt, wie Google News RSS in Python (Feed-Parser) analysiert wird. Google News mit Python kratzen und mit R bearbeiten. Bei dieser Methode ist der Zusammenfassungstext jedoch seit etwa Oktober 2019 derselbe wie der Titeltext.

Daher werde ich dieses Mal ein Skript einführen, das Beautiful Soup verwendet, um die Artikelinformationen auf der Google News-Suchergebnisseite abzurufen. Im Gegensatz zu feedparser, das Artikelinformationen auf organisierte Weise bereitstellt, muss die Suchergebnis-Webseite nach dem Speicherort der Artikelinformationen durchsucht und die Informationen angegeben werden, die durch Tags, Elemente und Attribute extrahiert werden sollen.

Hier stellen wir eine Methode zur Suche nach Artikelinformationen vor, die Sie mit Google Ghrome abrufen möchten, und ein Skript zum Abrufen von Artikelinformationen aus den erhaltenen Seitenstrukturinformationen mithilfe der Bibliotheksanforderungen und Beautful Soup.

1. Analyse der Artikelinformationen auf der Suchergebnisseite durch Google Chrome

Für das Suchwort haben wir "Tapiru" verwendet, das als Top Ten der New Words and Popular Words Awards 2019 ausgewählt wurde. Die unten gezeigten Suchergebnisse werden angezeigt. image.png

Um die Struktur dieser Seite zu überprüfen, platzieren Sie den Cursor auf den Titel des Artikels, klicken Sie mit der rechten Maustaste und klicken Sie unten im angezeigten Menü auf Validieren.

image.png

Die Elementkonfiguration der HTML-Seite wird oben rechts angezeigt. Identifizieren Sie in diesem Fenster den Speicherort der Artikelinformationen und verstehen Sie die Tags und Attribute, die zum Abrufen der Informationen erforderlich sind.

image.png

Wenn Sie sich den angezeigten HTML-Code ansehen, werden Sie schüchtern sein, aber die erforderlichen Informationen befinden sich immer in der Nähe dieser hellblauen Zone. Daher müssen Sie sorgfältig und beharrlich suchen. Direkt unterhalb der hellblauen Zone

Wenn Sie auf ▶ klicken, wird die untere Ebene geöffnet und der Titeltext "# Tapiru English Weißt du? ..." angezeigt. Ich konnte bestätigen, dass die Informationen des ersten Artikels in der Nähe der hellblauen Zone geschrieben wurden. タイトル.jpg

Wenn Sie also im grauen Teil nach dem Gruppierungs-Tag "div" suchen (siehe das Ende der Satzreferenz für das div-Tag), um das oberste Tag zu finden, das die Informationen dieses Artikels enthält,

▼<div class="xrnccd"

Es scheint Artikelinformationen zu geben, die Sie in dieser unteren Ebene wünschen. Wählen Sie daher grob die Informationen von ungefähr 100 Artikeln mit "xrnccd" der Klasse aus, die dieses Tag als Selektor für schöne Suppe identifiziert. Alle Artikelinformationen, die mit dem folgenden Skript durchsucht werden, können Artikeln zugewiesen werden.

articles = soup.select(".xrnccd")

Suchen und erhalten Sie als Nächstes den Teil, in dem Titel, Zusammenfassung, URL des Originalartikels und Veröffentlichungsdatum jedes Artikels beschrieben sind. Der Titeltext "# Tapiru no English ..." befindet sich direkt unter der hellblauen Zone.

Knapp unter

Klicken Sie auf ▶, um die untere Ebene zu öffnen

<span class = ・ ・ ・

Der Text der ersten Zeilen des Artikels wurde direkt darunter angezeigt. Es wurde nicht auf der Suchergebnis-Webseite angezeigt, aber hier versteckt. Dies wird als Zusammenfassung bezeichnet.

image.png

Das Skript, um diesen Text zu erhalten summary = entry.find (" span "). Text.

Klicken Sie für die Informationen zum Veröffentlichungsdatum des Artikels auf das ▶ von <div class = "Qmr ..." direkt darunter, um die untere Ebene zu öffnen. "Datetime = 2019-12-13 ..." befindet sich direkt unter "<time class =". hätten.

image.png

Das Skript zum Abrufen dieser Datums- und Uhrzeitangabe lautet time_elm = entry.find (" time ").

Schließlich die URL der Artikelseite, die sich im hellblauen Teil der Überprüfung befindet. Dies bedeutet, dass die verknüpften Informationen im Titel des Artikels platziert werden.

image.png

<a class="VDXfz" jsname="hXuDdf" jslog="85008; 2:https://prtimes.jp/main/thml/rd/p/000001434.000011710.html;

Es ist der Teil von https: // ~. Ich habe die folgenden zwei Skripte verwendet. ~~ url_elm = entry.find("a")~~ ~~ url_elm = entry.find("a", class_= "VDXfz")~~ url_elm = entry.find("article") link = url_elm.get("jslog")

Lassen Sie uns das Skript durch vorstellen. Verwenden Sie lstrip () und rstrip (), um unnötige Zeichen am Ende der erfassten Informationen zu löschen. Wenn keine Informationen zum Veröffentlichungsdatum vorhanden sind, wird bei der Ausnahmeverarbeitung stattdessen "0000-00-00" ersetzt. Die erfassten Informationen werden von den Bibliothekspandas in einen Datenrahmen konvertiert und in einer CSV-Datei gespeichert.

2. Skript zum Scraping von Google News-Suchergebnissen

Umgebung

Windows10 Python 3.6.2

Skript

google_news


#Aufruf der gewünschten Bibliothek
import pandas as pd    #Um das Scraping-Ergebnis in einer CVS-Datei im Datenrahmenformat zu speichern
import pprint    #Anzeigen eines Teils des Datenrahmens
from bs4 import BeautifulSoup  #Analyse und Extraktion der erfassten Webseiteninformationen
import requests     #Informieren Sie sich über Webseiten
import urllib       #Holen Sie sich die Keyword-URL-Codierung

#Konvertieren Sie das Suchwort "tapiru" in Zeichen und fügen Sie es zwischen die URLs auf der Suchergebnisseite ein.
s = "Tapiru"
s_quote = urllib.parse.quote(s)
url_b4 = 'https://news.google.com/search?q=' + s_quote + '&hl=ja&gl=JP&ceid=JP%3Aja'

#Informationen auf der Suchergebnisseite abrufen
res = requests.get(url_b4)
soup = BeautifulSoup(res.content, "html.parser")

#Wählen Sie Informationen für alle Artikel aus
articles = soup.select(".xrnccd")

#Holen Sie sich die Informationen zu jedem Artikel wiederholt, um sie aufzulisten, und weisen Sie sie der Liste zu
news = list()   #Erstellen Sie eine leere Liste für die Zuordnung

for i, entry in enumerate(articles, 1):
    title = entry.find("h3").text
    summary = entry.find("span").text
    summary = title + "。" + summary
    #url_elm = entry.find("a")Gewechselt zu
    url_elm = entry.find("article")
    link = url_elm.get("jslog")
    link = link.lstrip("85008; 2:")		#Linken Rand löschen
    link = link.rstrip("; track:click")	#Rechte Kante löschen
    time_elm = entry.find("time")
    try:	#Ausnahmebehandlung
        ymd = time_elm.get("datetime")
    except AttributeError:
	    ymd = "0000-00-00"
	ymd = ymd[0:10]
	ymd = ymd.replace("-", "/")		#Ersatz
	sortkey = ymd[0:4] + ymd[5:7] + ymd[8:10] #Zum Sortieren nach Datum
				
	tmp = {				#Im Wörterbuchtyp gespeichert
	    "title": title,
	    "summary": summary,
	    "link": link,
	    "published": ymd,
	    "sortkey": sortkey
        }

	news.append(tmp)  #Fügen Sie der Liste Informationen für jeden Artikel hinzu
	
	#In Datenrahmen konvertieren und als CSV-Datei speichern
	news_df = pd.DataFrame(news)
	pprint.pprint(news_df.head())  #Zeigen Sie die ersten 5 Zeilen an, um die Daten zu überprüfen
	filename = s + ".csv"
	news_df.to_csv(filename, encoding='utf-8-sig', index=False)	

Das Google News-Suchskript wird für die folgenden Artikel verwendet.

[Finden Sie die Samen von Lebensmittelhits mit Data Science! (1) - Das Geheimnis von Lawsons Baschi-Hit](https://blog.hatena.ne.jp/yamtakumol/yamtakumol.hatenablog.com/edit?entry= 26006613407003507)

[Lassen Sie uns die Samen der Lebensmittelhits finden! (2) --- "Vollständiges Essen" und "Wetterkinderrezept" von Juni bis August 2019](https://blog.hatena.ne.jp/yamtakumol/ yamtakumol.hatenablog.com/edit?entry=26006613422742161)

[Finden wir die Samen der Lebensmittelhits! (3) - September 2019 ist das Lebensmittel aus Taiwan nach Tapiocati, insbesondere "Käsetee"](https://blog.hatena.ne.jp/yamtakumol/ yamtakumol.hatenablog.com/edit?entry=26006613447159392)

Lassen Sie uns die Samen der Lebensmittelhits finden! - Süßkartoffeltorte im Oktober 2019

** Samen von Nahrungsmitteln werden für 2020 erwartet - Käsebällchen - **

Referenz:

Was ist HTML? Wenn Sie dies lesen, können auch Anfänger definitiv HTML schreiben! Was ist eine HTML-Div-Klasse? Kommentar mit Beispielen, die in 5 Minuten verstanden werden können

Recommended Posts