[Python] Ich habe einen Web-Scraping-Code erstellt, der automatisch den Nachrichtentitel und die URL von Nihon Keizai Shimbun erfasst.

Grund für die Veröffentlichung

・ Ich habe kürzlich Web Scraping studiert und möchte Menschen helfen, die auch studieren. ・ Für die Ausgabe meines eigenen Lernens. Ausgabepraxis. ・ Es handelt sich um eine menschliche Ausgabe, die weniger als einen Monat nach dem Berühren von Web Scraping oder Selen erfolgt. Im Gegenteil, von nun an Bitte verwenden Sie es als Richtlinie, da Leute, die es starten, normalerweise so viel werden können. ・ Ich verstehe die sehr detaillierte Erklärung nicht so gut wie möglich. Ich kann es nur grob verstehen, also hoffe ich, dass diejenigen, die es lesen, es verstehen. ・ Wir verweisen auf robots.txt und beurteilen, dass es kein Problem zu geben scheint, und implementieren es.

Code erstellt

newspaper.py


import requests
from bs4 import BeautifulSoup
import pandas as pd

#Erstellen der für das Web-Scraping erforderlichen Liste
elements_title = []
elements_url = []

#Web-Scraping-Prozess
def get_nikkei_news():
    url = "https://www.nikkei.com/"
    response = requests.get(url)
    html = response.text
    soup = BeautifulSoup(html,"html.parser")

    #Bearbeitung über Titel
    title_list = soup.select(".k-card__block-link")
    for title in title_list:
        elements_title.append(title.text)

    #Verarbeitung über URL
    url_list = soup.select(".k-card__block-link")
    for i in url_list:
        urls = i.get("href")
        if "http" not in urls:
            urls = "https://www.nikkei.com" + urls
            elements_url.append(urls)
        else:
            elements_url.append(urls)

#Aufruf des Web-Scraping-Prozesses
get_nikkei_news()

#Pandas Verarbeitung
df = pd.DataFrame({"news_title":elements_title,
                   "news_url":elements_url})
print(df)
df.to_csv("nikkei_test_select.csv", index=False, encoding="utf-8")

Ausgabeergebnis (nur Konsole)

              news_title                                           news_url
0 Wachstumsrate für das Geschäftsjahr 2008, minus 4%Mid-Taiwan Government Outlook https://www.nikkei.com/article/DGXMZO62026930Z...
1 US-Australien 2 Plus 2, "Ernste Bedenken" auf Chinas mächtiger Route https://www.nikkei.com/article/DGXMZO62026150Z...
2 gefährliche "Xi Jinping Politik" alle negativ, der Sowjetunion, die Kollision im US-Zauber https einlädt://www.nikkei.com/article/DGXMZO61984420Y...
3 Die Wiederaufbereitungsanlage für Kernbrennstoffe hat die Sicherheitsprüfung bestanden und den Betrieb im Geschäftsjahr 2009 aufgenommen. Https://www.nikkei.com/article/DGXMZO62026760Z...
4 Unterbrochenes Auslandsstudium in Corona, plötzliche Arbeitssuche, Gerichtsverfahren für zurückkehrende Studenten https://www.nikkei.com/article/DGXMZO61953440X...
..                         ...                                                ...
70 Kleine Rakete, kleine und mittlere usw., die in der Luft starten sollen https://www.nikkei.com/article/DGXMZO61958380X...
71 Marunaka stellt vorzugsweise technische Auszubildende in seinem Heimatland Aeon https ein://www.nikkei.com/article/DGXMZO62005790Y...
72 Stärkung der Grenzmaßnahmen zur Wiederaufnahme internationaler Flüge Präsident des Naha Airport Building https://www.nikkei.com/article/DGXMZO62017470Y...
73 Der Präsident der Kanagawa Bank, Kondo, reformiert erstmals das Kredit-Screening https://www.nikkei.com/article/DGXMZO61933170X...
74 Toriten: Genießen Sie den Geschmack von Oitas Gastfreundschaft und essen Sie beim Gehen https://www.nikkei.com/article/DGXMZO56989060Z...

Übersichtserklärung

・ Nihon Keizai Shimbun (https://www.nikkei.com/) Die Titel und URLs aller Nachrichten und Anzeigen, die auf der obersten Seite von angezeigt werden Es handelt sich um einen Web-Scraping-Code, der die Verarbeitung zum Ausspucken im CSV-Format durchführt. Ich denke, es ist ein grundlegender (möglicherweise) Code für das Web-Scraping mit BeautifulSoup und Anfragen.

・ Bereiten Sie eine leere Liste vor, um den Titel und die URL der Nachricht zu speichern. Die Verarbeitung zum Extrahieren der Daten, die in die Liste aufgenommen werden sollen, wird in jeder Funktion durchgeführt. Um den Nachrichtentitel zu extrahieren, hätte ich ihn einfach abrufen sollen, aber die URL enthält möglicherweise von Anfang an "https: //" (Protokollteil). Einige von ihnen waren nicht angehängt, daher haben wir einen bedingten Zweig erstellt, und für diejenigen, die nicht angehängt waren, "https://www.nikkei.com". Hinzugefügt. (Möglicherweise wird ein seltsamer Teil der URL ausgegeben. Es schien nicht so, als hätte ich sie visuell überprüft, aber wenn dies der Fall wäre, wäre sie behoben (-_-;))

-Es wird von print () und auch im CSV-Format ausgegeben. Da es jedoch mit utf-8 ausgegeben wird, werden die Zeichen beim Öffnen auf einem Windows-PC verstümmelt. Ich benutze Atom, Google Drive, Cloud9 usw. Wir überprüfen den Inhalt. Wenn Sie also die Ausgabe durch Kopieren dieses Codes überprüfen möchten, lesen Sie bitte <m (__) m>

Code Erklärung (grob)

Der folgende Teil der Funktion, die den Web-Scraping-Prozess ausführt, ist sorgfältig codiert, da ich es für eine Magie halte. Kopieren Sie die Ziel-URL, die Sie im Web scrapen möchten, und fügen Sie sie in die URL ein. Bringen Sie die HTML-Datei von dieser URL. Ich denke, es ist wie die Analyse der Struktur mit HTML-Perspektive.

parts.py


    url = "https://www.nikkei.com/"
    response = requests.get(url)
    html = response.text
    soup = BeautifulSoup(html,"html.parser")

Der folgende Code ruft den Titel ab. Anschließend wird der extrahierte Titel in der Liste gespeichert.

parts.py


    title_list = soup.select(".k-card__block-link")
    for title in title_list:
        elements_title.append(title.text)

Der folgende Code ruft die URL ab. Der Inhalt kann jedoch unzureichend sein, wenn Sie ihn nur herausnehmen. Da dies der Fall war, wird die bedingte Verzweigung mit der if-Anweisung durchgeführt, und wenn ein Mangel vorliegt, gleichen Sie den Mangel aus Es wird in der Liste gespeichert.

parts.py


    url_list = soup.select(".k-card__block-link")
    for i in url_list:
        urls = i.get("href")
        if "http" not in urls:
            urls = "https://www.nikkei.com" + urls
            elements_url.append(urls)
        else:
            elements_url.append(urls)

Im Folgenden wird ein Modul namens pandas verwendet, um es in das CSV-Format zu konvertieren und auszuspucken. Machen Sie es in Pandas zu einem Wörterbuchtyp, legen Sie den Spaltennamen im Schlüssel fest und legen Sie das Element jeder Spalte im Wert fest. Ich konnte die Daten im CSV-Format ordentlich ausgeben. Es ist bequem. Pandas.

parts.py


df = pd.DataFrame({"news_title":elements_title,
                   "news_url":elements_url})
print(df)
df.to_csv("nikkei_test.csv", index=False, encoding="utf-8")

Recommended Posts

[Python] Ich habe einen Web-Scraping-Code erstellt, der automatisch den Nachrichtentitel und die URL von Nihon Keizai Shimbun erfasst.
[Python-Scraping] Geben Sie die URL und den Titel der Site mit einem bestimmten Schlüsselwort in eine Textdatei ein
Ich habe einen Kalender erstellt, der den Verteilungsplan von Vtuber automatisch aktualisiert
[Python / C] Ich habe versucht, ein Gerät zu erstellen, das den Bildschirm eines PCs drahtlos aus der Ferne scrollt.
Ich habe einen Kalender erstellt, der den Verteilungsplan von Vtuber automatisch aktualisiert (Google Kalender Edition).
Ich habe einen schlaffen Bot gemacht, der mich über die Temperatur informiert
Ich habe versucht, ein Gerüstwerkzeug für Python Web Framework Bottle zu erstellen
Ich habe ein Programm erstellt, das den Tierkreis mit tkinter automatisch berechnet
Holen Sie sich den Titel und das Lieferdatum von Yahoo! News in Python
Ich habe einen Linienbot erstellt, der das Geschlecht und das Alter einer Person anhand des Bildes errät
[Python] Ich habe das Tagebuch eines Mannes im ersten Jahr des Arbeitslebens analysiert und das Arbeitsleben positiv / negativ beurteilt.
Ich habe eine Webanwendung in Python erstellt, die Markdown in HTML konvertiert
[Python] Ich habe einen einfachen Code geschrieben, der automatisch AA generiert (Ascii Art).
Die Geschichte der Entwicklung einer WEB-Anwendung, die automatisch Fangkopien generiert [MeCab]
Ich habe ein Programm erstellt, um die Größe einer Datei mit Python zu überprüfen
Ich habe eine Funktion erstellt, um die Bewegung eines zweidimensionalen Arrays (Python) zu sehen.
Ich habe AI im Netz patrouillieren lassen und einen Webdienst für das Gadget-Ranking erstellt, der einmal pro Woche aktualisiert wird
Artikel, der eine Person sein kann, die den Mechanismus der API versteht und beherrscht (mit Python-Code)
Ich habe in Python ein Programm erstellt, das FX-CSV-Daten liest und eine große Anzahl von Diagrammbildern erstellt
Ich habe ein System erstellt, das automatisch entscheidet, ob es morgen mit Python ausgeführt wird, und es zu Google Kalender hinzufügt.
[Python] Ich habe ein Skript erstellt, das Dateien auf dem lokalen PC automatisch ausschneidet und auf eine externe SSD einfügt.
Ich verglich die Geschwindigkeit von Go Language Web Framework Echo und Python Web Framework Flask
[Python] Ich habe einen LINE-Bot erstellt, der Gesichter erkennt und Mosaikverarbeitungen durchführt.
[Python] Ein Programm, das die Anzahl der Aktualisierungen der höchsten und niedrigsten Datensätze berechnet
Ich habe ein Tool zum automatischen Sichern der Metadaten der Salesforce-Organisation erstellt
Ich habe ein Skript erstellt, das das aktive Fenster mit win32gui von Python aufzeichnet
Ich habe versucht, Web-Scraping mit Python und Selen
Berücksichtigung der Stärken und Schwächen von Python
Ich habe eine Twitter-App erstellt, die die Zeichen der Vorverbindung mit Heroku entschlüsselt (Fehler).
[Python3] Machen Sie einen Screenshot einer Webseite auf dem Server und schneiden Sie sie weiter zu
Ich habe ein Docker-Image erstellt, das RSS liest und automatisch regelmäßig twittert, und es veröffentlicht.
Ich habe die Geschwindigkeit der Referenz des Pythons in der Liste und die Referenz der Wörterbucheinbeziehung aus der In-Liste verglichen.
Erstellt eine Web-App, die IT-Ereignisinformationen mit Vue und Flask abbildet
Holen Sie sich den Titel der Yahoo News und analysieren Sie die Stimmung
[Python] Ein Programm, das die Anzahl der Täler zählt
Erstellen Sie einen BOT, der die Discord-URL verkürzt
Ich habe mit Python eine App für die Benachrichtigung über Netznachrichten erstellt
Ich habe eine VM erstellt, auf der OpenCV für Python ausgeführt wird
#Eine Funktion, die den Zeichencode einer Zeichenfolge zurückgibt
Ich habe mir die Versionen von Blender und Python angesehen
Ich habe versucht, LINE BOT mit Python und Heroku zu machen
Ein Memo, dass ich den Datenspeicher mit Python berührt habe
Ich hatte das Gefühl, dass ich den Python-Code nach C ++ 98 portiert habe.
[Python] Ein Programm, das die Positionen von Kängurus vergleicht.
Ich habe eine Twitter-App erstellt, die das Bild eines bestimmten Charakters auf der Twitter-Timeline durch Pytorch-Transfer-Lernen identifiziert und speichert
Beim Schreiben in eine CSV-Datei mit Python habe ich einen kleinen Fehler gemacht und den Liefertermin nicht eingehalten
Ich habe in Python ein Programm erstellt, das die 1-Minuten-Daten von FX auf eine beliebige Zeit (1 Stunde usw.) ändert.
Sammeln Sie Tweets über "Corona" mit Python und erkennen Sie automatisch Wörter, die aufgrund des Einflusses von "Corona" zu einem heißen Thema geworden sind.
Ich habe ein Tool erstellt, um automatisch ein Zustandsübergangsdiagramm zu generieren, das sowohl für die Webentwicklung als auch für die Anwendungsentwicklung verwendet werden kann
Erstellt einen Toolsver, der Betriebssystem, Python, Module und Toolversionen an Markdown ausspuckt
Eine Bibliothek, die Leben und Tod anderer Maschinen durch Ping von Python aus überwacht
So starten Sie einen einfachen WEB-Server, der CGI von PHP und Python ausführen kann
Ich habe "Streamlit" ausprobiert, das den Python-Code so wie er ist in eine Webanwendung verwandelt
Ich habe eine Funktion zum Trimmen des Bildes von Python openCV erstellt. Verwenden Sie sie daher bitte.
[Python] Ein Programm, um die Anzahl der Äpfel und Orangen zu ermitteln, die geerntet werden können
Ein Werkzeug, das die Gacha von Soshage automatisch dreht
Ich habe versucht, eine Rangliste zu erstellen, indem ich das Mitgliederteam der Organisation abgekratzt habe