Holen Sie sich zuerst die CSV-Daten. Ich habe mich gefragt, welche Daten ich bekommen soll. Ich werde die Texte meiner Lieblings-Yorushika kratzen und holen.
Installieren Sie zunächst die zum Scraping erforderlichen Module
pip install requests
pip install bs4
pip install lxml
pip install pandas
Ich habe hier darauf hingewiesen. 【https://qiita.com/yuuuusuke1997/items/122ca7597c909e73aad5#%E3%81%8A%E3%82%8F%E3%82%8A%E3%81%AB】
import requests
from bs4 import BeautifulSoup
import pandas as pd
import time
#Erstellen Sie eine Tabelle mit den Scraped-Daten
list_df = pd.DataFrame(columns=['Text'])
for page in range(10):
try:
#Top-Adresse der Song-Seite
base_url = 'https://www.uta-net.com'
#Textliste Seite
artist = "22653"
url = 'https://www.uta-net.com/artist/'+artist+'/0/' + str(page) + '/'
response = requests.get(url)
soup = BeautifulSoup(response.text, 'lxml')
links = soup.find_all('td', class_='side td1')
for link in links:
a = base_url + (link.a.get('href'))
#Lyrics Detail Seite
response = requests.get(a)
soup = BeautifulSoup(response.text, 'lxml')
song_lyrics = soup.find('div', itemprop='lyrics')
song_lyric = song_lyrics.text
song_lyric = song_lyric.replace('\n','')
#Warten Sie 1 Sekunde, bis der Server nicht geladen ist
time.sleep(1)
#Fügen Sie die erworbenen Texte zur Tabelle hinzu
tmp_se = pd.DataFrame([song_lyric], index=list_df.columns).T
list_df = list_df.append(tmp_se)
except:
print(page)
import traceback
traceback.print_exc()
print(list_df)
#CSV speichern
list_df.to_csv('list.csv', mode = 'a', encoding='utf_8_sig')
Installieren Sie zuerst, was Sie brauchen
pip install "https://github.com/megagonlabs/ginza/releases/download/v1.0.2/ja_ginza_nopn-1.0.2.tgz"
pip install matplotlib
pip install wordcloud
Siehe hierzu [https://qiita.com/osakasho/items/7408d031ca0b2192422f]
# coding: utf-8
import spacy
nlp = spacy.load('ja_ginza_nopn')
import pandas as pd
import matplotlib.pyplot as plt
import collections
from wordcloud import WordCloud
def ginza(word):
doc = nlp(word)
#Umfrageergebnisse
total_ls = []
Noun_ls = [chunk.text for chunk in doc.noun_chunks]
Verm_ls = [token.lemma_ for token in doc if token.pos_ == "VERB"]
for n in Noun_ls:
total_ls.append(n)
for v in Verm_ls:
total_ls.append(v)
return total_ls, Noun_ls, Verm_ls
"""---------------CSV lesen und voreingestellt--------------"""
csv_read_path = "list.csv"
df = pd.read_csv(csv_read_path)
target_categories = ["Text"]
black_list = ["test"]
"""-------------------------------------------------------------"""
"""---------------Morphologische Verarbeitung------------------------"""
for target in target_categories:
total_voc = []#Bereiten Sie eine Box vor, um Buchstaben zu platzieren
for data in df[target]:
try:
word_ls, noun_ls, verm_ls = ginza(data)
except:#Wenn es nicht zerlegt werden kann, verwenden Sie ein Wort.
word_ls = [data]
for w in word_ls:
if not w in black_list:#Überprüfen Sie, ob das Wort auf der schwarzen Liste steht.
total_voc.append(w)
print("Die Anzahl der Wörter ist", len(total_voc), "war.")
#Rangfolge der häufigsten Wörter
c = collections.Counter(total_voc)
#Schreiben Sie an CSV
c_data = (c.most_common())
csvdf = pd.DataFrame(c_data)
filename = target + ".csv"
csvdf.to_csv(filename, encoding='utf_8_sig')
print("----------------------------")
#Machen Sie vorerst ein Diagramm
#Geben Sie zusätzliche Teilschriftarten an.
plt.rcParams["font.family"] = "IPAexGothic"
plt.title(target)
plt.grid(True)
graph_x_list = []
graph_y_list = []
top_num = 0
for key, value in c.most_common():
graph_x_list.append(key)
graph_y_list.append(value)
if top_num >= 10:
break
top_num += 1
try:
plt.bar(graph_x_list, graph_y_list)
#Grafik anzeigen
plt.show()
except:
print(target, "Die Daten konnten nicht gezeichnet werden.")
#Zeichnen Sie in WordCloud
font = 'C:/Windows/Fonts/YuGothM.ttc'
wordcloud = WordCloud(background_color="white", width=1000, height=600, font_path=font)
wordcloud.generate(" ".join(wordcloud_ls))
wordcloud.to_file(target+'.png')
"""-------------------------------------------------------------"""
Danke für deine harte Arbeit.