・ 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.
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")
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...
・ 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>
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