[PYTHON] [Einführung in WordCloud] Spielen Sie mit Scraping ♬

WordCloud, ich habe versucht, den Artikel zu kratzen und mit diesem Satz zu erstellen, da es sich um eine Frage zur Überschrift des Satzes handelte. Es ist leicht, ein wenig zu kratzen, aber es war mühsam, HTML mit allen Mitteln zu analysieren, aber es wurde einfach, den Artikel zu bekommen, also werde ich ihn als Artikel schreiben. 【Referenz】 ① Ich habe versucht, die Hauptnachrichtentitel von "Yahoo! News" mit Python zu kratzenHolen Sie sich den Titel von Nihon Keizai Shimbun mit Python3

Was ich getan habe

・ Einfaches Schaben ・ Yahoo News Überschrift erhalten ・ WC Nikkei Artikel

・ Einfaches Schaben

Referenz (1) scheint auf das anwendbar zu sein, was ich tun möchte, also hat es nicht funktioniert, aber Referenz (2) funktioniert gut und ist leicht zu verstehen, also werde ich hier eintreten. Wenn Sie sich also Referenz ② und dann Referenz Reference ansehen, wird der folgende Code angewendet.

# -*- coding: utf-8 -*-
from bs4 import BeautifulSoup
import requests
import urllib3
import re

url = "http://www.nikkei.com/"
"""
#Wenn Sie Anfragen verwenden, ist dies der richtige Ort
r = requests.get(url)
print(r.headers)
print("--------")
print(r.encoding)
print(r.content)
print(r.text)
soup = BeautifulSoup(r.text, 'html.parser')
#print(soup)
"""

#Wenn Sie urllib3 verwenden, ist dies der richtige Ort
http = urllib3.PoolManager()
r = http.request('GET', url)

soup = BeautifulSoup(r.data, 'html.parser')
#print(soup)
#Holen Sie sich das Titelelement →<title>Wirtschafts-, Aktien-, Geschäfts- und politische Nachrichten:Nikkei elektronische Version</title>
title_tag = soup.title
#Elementzeichenfolge abrufen → Wirtschafts-, Aktien-, Geschäfts- und politische Nachrichten:Nikkei elektronische Version
title = title_tag.string
#Titelelement ausgeben
print(title_tag)
#Titel als Zeichenfolge ausgeben
print(title)

Das gleiche Ergebnis wird mit Anfragen erhalten. Das Argument von BeautifulSoup ist etwas anders, weil r anders ist. Ergebnis ist

http://www.nikkei.com/


<title>Nihon Keizai Shimbun</title>
Nihon Keizai Shimbun

Wenn Sie die Seite des Nikkei-Artikels erhalten, lautet diese wie folgt

https://www.nikkei.com/article/DGXMZO56522090X00C20A3000000/


<title>Über 100.000 neue Koronainfektionen werden in 3 Monaten zu einer globalen Epidemie (Foto)=Reuters):Nihon Keizai Shimbun</title>
Über 100.000 neue Koronainfektionen werden in 3 Monaten zu einer globalen Epidemie (Foto)=Reuters):Nihon Keizai Shimbun

・ Yahoo News Überschrift erhalten

# -*- coding: utf-8 -*-

url = "https://news.yahoo.co.jp"
#Wenn Sie urllib3 verwenden, ist dies der richtige Ort
http = urllib3.PoolManager()
r = http.request('GET', url)

soup = BeautifulSoup(r.data, 'html.parser')
#Holen Sie sich das Titelelement
title_tag = soup.title
#Holen Sie sich die Zeichenfolge der Elemente
title = title_tag.string
#Titelelement ausgeben
print(title_tag)
#Titel als Zeichenfolge ausgeben
print(title)

#Unten hinzugefügt
for title in soup.select("p"):
    print(title.getText())

Die folgenden Ergebnisse wurden erhalten. Ich werde mir jedoch die oberste Seite ansehen, bin mir aber nicht sicher, weil sie sich ein wenig von der tatsächlichen Aufstellung unterscheidet.

https://news.yahoo.co.jp Ergebnis.


<title>Yahoo!Nachrichten</title>
Yahoo!Nachrichten
Stichwort:
Suche
Holen Sie sich neue bequemer mit ID
Einloggen
JavaScript ist derzeit deaktiviert. Yahoo!Um alle Funktionen von News zu nutzen, aktivieren Sie bitte die JavaScript-Einstellungen. Klicken Sie hier, um die JavaScript-Einstellungen zu ändern.
Mehr sehen
Liste der Themen in allen Kategorien
Pferderennen ohne Zuschauer Vorteil für das beliebteste Pferd?
Warum? Meine Adresse bei Amazon ... Gepostet als Standort des Verkäufers. "Ich mache mir Sorgen" Ich habe Misstrauen gegenüber Frauen
"Ich will vom Schiff springen", appelliert nacheinander in einem privaten Raum und wartet auf neue Korona
Eile zurück nach Japan, Abschiedsparty abgesagt "Was soll ich tun?" Schreie japanischer Einwohner in China und Südkorea
Südkorea tobt über Japans Einwanderungsbeschränkungen, "anti-japanische" Gegenmaßnahmen voller Widersprüche
Geht der Dorn, der in deinem Finger steckt, zum Herzen? Wenn Sie es selbst herausziehen, verwenden Sie einen 5-Yen-Ball
Yahoo!JAPAN-Spezialseite
Zusammenfassung der neuen Coronavirus-Infektionen
Die Präfekturversammlung von Shizuoka stellt eine große Anzahl von Masken ins Netz.
Erste bestätigte Infektion in der Präfektur Gunma Neues Koronavirus
Die erste infizierte Person in Hiroshima "Seki" vor einem Monat
Die erste infizierte Person in Hiroshima "Seki" vor einem Monat
Neue Korona, häusliche Infektion 56 Menschen allein in 6 Tagen
Ein Angestellter fand es damals in einem anderen Geschäft ...
Ehemalige AKB48 "Mayumi Watanabe" und "UTAGE!", Die verschwunden sind, fehlen ebenfalls, was mit ihr passiert
Bedenken hinsichtlich einer neuen Koronainfektion: Grund, warum 50% der Zahnkliniken gefährlich sind
Zu dummes Verhalten von Dummköpfen, die sich in Corona verlieren
Japan ist endlich vorbei
Warum ist "Shinkansen Tobira" so eng ...? Grund dafür überzeugend

Lassen Sie uns also den Artikel von Nikkei ausgeben Dies hat irgendwie [Informationen auf dieser Seite] erhalten (https://www.nikkei.com/article/DGXMZO56522090X00C20A3000000/).

https://www.nikkei.com/article/DGXMZO56522090X00C20A3000000/


<title>Über 100.000 neue Koronainfektionen werden in 3 Monaten zu einer globalen Epidemie (Foto)=Reuters):Nihon Keizai Shimbun</title>
Über 100.000 neue Koronainfektionen werden in 3 Monaten zu einer globalen Epidemie (Foto)=Reuters):Nihon Keizai Shimbun
Artikel speichern
Nur für zahlende Mitglieder verfügbar. Sie können die gespeicherten Artikel auch auf Ihrem Smartphone oder Tablet anzeigen.
> Registrierung neuer Mitglieder
> Anmelden
Speichern Sie Evernote
Für die Verwendung ist eine Registrierung der Mitgliedschaft erforderlich
> Registrierung neuer Mitglieder
> Anmelden
Wenn Sie Artikel in Unternehmen teilen, in Besprechungsmaterialien nachdrucken / duplizieren, Bestellungen drucken usw. möchten, klicken Sie bitte auf den Link.
Hier klicken für Details

Die Zahl der mit dem neuen Koronavirus infizierten Menschen nimmt im Iran (Hauptstadt Teheran) rapide zu.=Reuters
[Geneve=Rintaro Hosokawa] Die Zahl der Menschen, die weltweit mit dem neuen Koronavirus infiziert sind, hat 100.000 überschritten. Ungefähr drei Monate nachdem der erste Patient im Dezember 2019 in Wuhan, Provinz Hubei, China, aufgetreten war, breitete er sich rasch auf andere asiatische Länder, Europa und die Vereinigten Staaten aus. Selbst jetzt wird nicht erwartet, dass die Ausbreitung der Infektion endet, und Reisebeschränkungen und Großveranstaltungen werden nacheinander abgesagt. Die Bedrohung durch Viren wirft einen großen Schatten auf das Leben und die Unternehmensaktivitäten der Menschen.

Die Zahl der Infizierten überstieg das schwere akute respiratorische Syndrom (SARS) von 2002 bis 2003 und das 2012 auftretende nahöstliche respiratorische Syndrom (MERS) erheblich und wurde zu einer globalen Epidemie.
Nach aggregierten Daten der Johns Hopkins University in den USA beträgt die Zahl der Infizierten weltweit etwa 102.000 (Stand 6:00 Uhr am 7. japanischen Zeitpunkt). Etwa 80% davon befinden sich in China (Festland). Südkorea hat neben China mit rund 6.600 Einwohnern die größte Zahl. Es folgen der Iran (ca. 4750 Personen) und Italien (ca. 4640 Personen). Japan hat 400 Menschen überschritten.
Während in China die Zahl der Neuinfektionen in letzter Zeit zurückgegangen ist, hat die Zahl der Infektionen in anderen Ländern / Regionen rapide zugenommen. Tedros, Generalsekretär der Weltgesundheitsorganisation (WHO), sagte auf einer Pressekonferenz am 6., er sei "zutiefst besorgt" über die globale Verbreitung. Insbesondere äußerte er große Besorgnis über die Ausbreitung von Infektionen in Entwicklungsländern, in denen die medizinische Infrastruktur anfällig ist. Er sagte: "Ich möchte, dass alle Länder der Eindämmung von Viren höchste Priorität einräumen" und forderte weitere Maßnahmen wie die Stärkung der medizinischen Systeme und Grenzmaßnahmen.
Die Forschung zu Impfstoffen und Therapeutika hat in jedem Land begonnen. Laut WHO befinden sich derzeit 20 Impfstoffe in der Entwicklung und viele klinische Studien für Therapeutika sind im Gange. Es gibt jedoch viele unklare Punkte wie die Infektiosität der neuen Corona. Einige sagen, dass sich die Infektion verlangsamen wird, wenn die Temperatur gegen Sommer steigt. Die WHO drängte jedoch darauf, sich nicht zu entspannen und sagte: "Es gibt keine Hinweise darauf, dass das Virus im Sommer verschwinden wird, und wir sollten davon ausgehen, dass es sich weiter ausbreiten wird."
Aufgrund der Verbreitung der neuen Corona breiten sich in jedem Land Reisebeschränkungen und Stornierungen von Geschäftsreisen und Reisen aus. In Norditalien, wo Infektionen weit verbreitet sind, mussten Autoteilefabriken schließen. Viele befürchten, dass der Personen- und Warenverkehr rasch stagniert und schwerwiegende Auswirkungen auf die Weltwirtschaft haben wird. Der Internationale Währungsfonds (IWF) hat angegeben, dass seine 20-jährige Prognose für das globale Wirtschaftswachstum unmittelbar nach der Finanzkrise das niedrigste Wachstum seit 11 Jahren seit 2009 sein könnte.
Am 30. Januar erklärte die WHO die neue Corona zum "international betroffenen Notfall im Bereich der öffentlichen Gesundheit". Ungefähr einen Monat später, am 28. Februar, wurde das globale Risiko in vier Stufen auf das höchste Niveau von "sehr hoch" angehoben.
Laut WHO ist es wichtig, dass Sie Ihre Hände gründlich waschen und Ihren Computer regelmäßig mit einem Desinfektionsmittel abwischen, um Infektionen zu vermeiden. Andererseits müssen asymptomatische Menschen zu vorbeugenden Zwecken keine Masken tragen und werden aufgefordert, keinen übermäßigen Gebrauch zu machen.

Wählen Sie einen kostenlosen / kostenpflichtigen Plan
Hier sind die Mitglieder
Artikel speichern
Nur für zahlende Mitglieder verfügbar. Sie können die gespeicherten Artikel auch auf Ihrem Smartphone oder Tablet anzeigen.
> Registrierung neuer Mitglieder
> Anmelden
Speichern Sie Evernote
Für die Verwendung ist eine Registrierung der Mitgliedschaft erforderlich
> Registrierung neuer Mitglieder
> Anmelden
Wenn Sie Artikel in Unternehmen teilen, in Besprechungsmaterialien nachdrucken / duplizieren, Bestellungen drucken usw. möchten, klicken Sie bitte auf den Link.
Hier klicken für Details
Elektronische Version oben
Pressemitteilung
Taifun Nr. 19 Akzeptanz des Hilfsfonds
Die elektronische Version ist für den ersten Monat kostenlos! Hier klicken für Details
Wetter
Pressemitteilung suchen
Kontoliste
Korrektur / Entschuldigung

・ WC Nikkei Artikel

Zu diesem Zeitpunkt müssen Sie lediglich den Code für das WC hinzufügen. WordCloud/yahoo_title.py

#$ python3 yahoo_title.py -d /usr/lib/aarch64-linux-gnu/mecab/dic/mecab-ipadic-neologd conversation_anzen.csv -s stop_words.txt

import requests
from bs4 import BeautifulSoup
import urllib3
import re
import argparse
from MeCab import Tagger
from wordcloud import WordCloud
import matplotlib.pyplot as plt

parser = argparse.ArgumentParser(description="convert csv")
parser.add_argument("input", type=str, help="csv file")
parser.add_argument("--dictionary", "-d", type=str, help="mecab dictionary")
parser.add_argument("--stop_words", "-s", type=str, help="stop words list")
args = parser.parse_args()

t = Tagger(" -d " + args.dictionary)

#url = "https://news.yahoo.co.jp"
url = "https://www.nikkei.com/article/DGXMZO56522090X00C20A3000000/"

stop_words = []
if args.stop_words:
    for line in open(args.stop_words, "r", encoding="utf-8"):
        stop_words.append(line.strip())

#Eine Funktion, die eine Liste in eine Zeichenfolge konvertiert
def join_list_str(list):
    return ' '.join(list)

#Stoppwort-Ausschlussfunktion
def exclude_stopword(text):
    changed_text = [token for token in text.lower().split(" ") if token != "" if token not in stop_words]
    #Wenn es wie oben belassen wird, liegt es im Listenformat vor. Konvertieren Sie es daher in eine durch Leerzeichen getrennte Zeichenfolge
    changed_text = join_list_str(changed_text)
    return changed_text

#Verwenden Sie urllib3
http = urllib3.PoolManager()
r = http.request('GET', url)
yahoo = BeautifulSoup(r.data, 'html.parser')

wc = WordCloud(font_path="/home/muauan/.fonts/NotoSansCJKjp-Regular.otf")
sk=0
for title in yahoo.select("p"):
    title = title.getText()
    title = re.sub(r"[^einer-龥-Hmm-0-9]", "", title)
    
    if len(title)>50:
        print("content{};{}".format(sk,title))
        splitted = " ".join([x.split("\t")[0] for x in t.parse(title).splitlines()[:-1] if x.split("\t")[1].split(",")[0] not in ["Partikel", "Hilfsverb", "Adverb", "Coalm", "Verb"]])
        splitted = exclude_stopword(splitted)
        wc.generate(splitted)
        plt.axis("off")
        plt.title("content_{};".format(sk))
        plt.tight_layout()
        plt.imshow(wc)
        plt.pause(0.05)
        plt.savefig('./output_yahoo/yahoo{}_{}.png'.format(sk,title[0:10])) 
        plt.close()
        sk += 1

Als Stoppwort verwende ich diesmal auch die vorherige japanese.txt.

Artikelnummer Satz WordCloud
content0 Geneb Rintaro Hosokawa Die Zahl der mit dem neuen Koronavirus infizierten Menschen in der Welt überstieg 100.000. Es breitete sich etwa drei Monate nach dem Erscheinen des ersten Patienten in Wuhan, Provinz Hubei, China, im Dezember 2019 rasch auf andere Länder Asiens, Europas und der Vereinigten Staaten aus. Selbst jetzt besteht keine Aussicht darauf, dass die Ausbreitung der Infektion ein Ende findet, und die Bedrohung durch Viren wie Reisebeschränkungen und die Absage von Großveranstaltungen wirft einen großen Schatten auf das Leben und die Unternehmensaktivitäten der Menschen. yahoo0_Genf Rintaro Hosokawa.png
content1 Die Zahl der Infizierten überstieg das schwere akute respiratorische Syndrom von 20023 und das 2012 auftretende respiratorische Syndrom im Nahen Osten bei weitem und wurde zu einer globalen Epidemie. yahoo1_Die Anzahl der Infizierten beträgt 20020.png
content2 Nach den von der Johns Hopkins University in den USA gesammelten Daten beträgt die Zahl der Infizierten auf der Welt am 7. Japans um 6:00 Uhr etwa 102.000. Der Iran hat ungefähr 4750 Menschen, Italien hat ungefähr 4640 Menschen und Japan hat mehr als 400 Menschen. yahoo2_Johns Hopkins.png
content3 In letzter Zeit ist die Zahl der Neuinfektionen in China zurückgegangen, aber die Zahl der Infektionen in anderen Ländern hat rapide zugenommen. Alle Länder, die große Besorgnis über die Ausbreitung von Infektionen in Entwicklungsländern mit besonders gefährdeter medizinischer Infrastruktur geäußert haben, haben die Eindämmung von Viren als oberste Priorität gefordert und weitere Maßnahmen wie die Stärkung der medizinischen Systeme und Grenzmaßnahmen ergriffen. Gebeten zu nehmen yahoo3_Kürzlich ein neues Gefühl in China.png
content4 Laut der Forschung zu Impfstoffen und Therapeutika in jedem Land befinden sich derzeit 20 Impfstoffe in der Entwicklung und viele klinische Studien für Therapeutika sind im Gange. Die neue Corona weist jedoch viele unklare Punkte wie die Infektiosität im kommenden Sommer auf. Es gibt auch Stimmen, dass sich die Infektion mit steigender Temperatur verlangsamen wird, aber es gibt keine Hinweise darauf, dass das Virus im Sommer verschwinden wird, und es sollte angenommen werden, dass es sich weiter ausbreiten wird, und er appellierte, die Vorsicht nicht zu lockern. yahoo4_Impfstoffe und Heilmittel in jedem Land.png
content5 Aufgrund der Verbreitung der neuen Corona breiten sich in jedem Land Reisebeschränkungen und Stornierungen von Geschäftsreisen aus. In Norditalien, wo die Zahl der Infektionen rapide zunimmt, stagniert der Verkehr von Personen und Gütern, deren Autoteilefabriken stillgelegt werden mussten, rapide. Viele befürchten, dass dies ein schwerer Schlag für die Weltwirtschaft sein wird. Der Internationale Währungsfonds hat angegeben, dass es das niedrigste Wachstum seit 11 Jahren seit 2009 sein wird, unmittelbar nach der Finanzkrise, was die Prognose der Wachstumsrate der Weltwirtschaft in 20 Jahren betrifft. yahoo5_Ausbreitung einer neuen Koronainfektion.png
content6 Ungefähr einen Monat nach der Erklärung der neuen Corona als international betroffener Notfall im Bereich der öffentlichen Gesundheit am 30. Januar wurde das globale Risiko am 28. Februar in vier Schritten auf das höchste Niveau angehoben. Angehoben yahoo6_Ist ein neues Modell am 30. Januar.png
content7 Dem Bericht zufolge ist es wichtig, die Hände gründlich zu waschen und den Computer regelmäßig mit einem Desinfektionsmittel abzuwischen, um Infektionen zu vermeiden. Menschen ohne Symptome müssen jedoch zu vorbeugenden Zwecken keine Maske tragen und diese übermäßig verwenden. Bitten, sich zu enthalten yahoo7_Nach, um eine Infektion zu verhindern.png

Ich bin nicht sehr zufrieden, aber ich denke, es zeigt Wörter, die Sätze darstellen. Inwieweit Sie zufrieden sein sollten, möchte ich, dass Sie den ersten Satz mehr behandeln als die Namen von Personen wie Genf, wie die Absage des Ereignisses und die Unfähigkeit, die Konvergenz der Ausbreitung der Infektion zu erkennen. .. ..

Zusammenfassung

・ Ich habe versucht, Nachrichtenartikel in WordCloud zu kratzen ・ Es stellte sich heraus, dass es fast in Echtzeit konvertiert werden kann.

・ Ich möchte es aktiver nutzen ・ Erweitern Sie die Anwendung des Schabens

Recommended Posts

[Einführung in WordCloud] Spielen Sie mit Scraping ♬
[Einführung in Python] Verwenden wir foreach mit Python
Erste Schritte mit Web Scraping
Spielen wir mit der 4. Dimension der 4. Dimension
Spielen wir mit Amedas Daten - Teil 1
[Einführung in Word Cloud] Einfache Verwendung mit Jetson-nano ♬
Einführung in RDB mit sqlalchemy Ⅰ
Spielen wir mit Amedas Daten - Teil 4
Spielen wir mit JNetHack 3.6.2, das einfacher zu kompilieren ist!
Spielen wir mit Amedas Daten - Teil 3
Spielen wir mit Amedas Daten - Teil 2
[Lass uns mit Python spielen] Bildverarbeitung zu Monochrom und Punkten
Lass uns mit Python mit Python spielen [Anfänger]
Einführung in RDB mit sqlalchemy II
[Einführung in Python] Verwenden wir Pandas
Lassen Sie uns mit Python Image Scraping durchführen
[Einführung in Python] Verwenden wir Pandas
[Einführung in Python] Verwenden wir Pandas
Fühlen wir uns wie ein Materialforscher mit Python [Einführung in Pymatgen]
[Ergänzung] [PySide] Spielen wir mit Qt Designer
Einführung in das Auffüllen von Python-Bildern Auffüllen von Bildern mit ImageDataGenerator
Fraktal zum Erstellen und Spielen mit Python
Ich möchte mit aws mit Python spielen
[Einführung in Pytorch] Ich habe mit sinGAN ♬ gespielt
[Teil1] Scraping mit Python → Organisieren Sie bis zu CSV!
Einführung in das Testen statistischer Hypothesen mit Statistikmodellen
Einführung in MQTT (Einführung)
Einführung in Scrapy (1)
Spiel mit dem Propheten
[Python] Einfache Einführung in das maschinelle Lernen mit Python (SVM)
Schaben mit Selen
Einführung in die künstliche Intelligenz mit Python 1 "Genetic Algorithm-Theory-"
Python-Handspiel (Beginnen wir mit AtCoder?)
Einführung in Scrapy (3)
Erste Schritte mit Supervisor
Kratzen Sie das Essen mit Python und geben Sie es an CSV aus
Schaben mit Selen ~ 2 ~
Scraping mit Python
Markov Chain Artificial Brainless mit Python + Janome (1) Einführung in Janome
Einführung in Python Bereiten wir die Entwicklungsumgebung vor
Markov-Kette Künstlich Gehirnlos mit Python + Janome (2) Einführung in die Markov-Kette
Einführung in Tkinter 1: Einführung
[REAPER] Wie man Reascript mit Python spielt
Einführung in die künstliche Intelligenz mit Python 2 "Genetic Algorithm-Practice-"
[Piyopiyokai # 1] Spielen wir mit Lambda: Erstellen einer Lambda-Funktion
Scraping mit Python
[Einführung in StyleGAN2] Unabhängiges Lernen mit 10 Anime-Gesichtern ♬
Spiele mit PyTorch
Einführung in Tornado (1): Python Web Framework mit Tornado gestartet
Ich wollte mit der Bezier-Kurve spielen
Einführung in PyQt
Einführung in Scrapy (2)
Spielen Sie mit 2016-Python
Schaben mit Selen
Einführung in den Formationsflug mit Tello edu (Python)
[Einführung zur Minimierung] Datenanalyse mit SEIR-Modell ♬
[Linux] Einführung in Linux
Einführung in Python mit Atom (unterwegs)
Einführung in Scrapy (4)
Einführung in discord.py (2)