前回
https://qiita.com/kuroge/items/2b805426a93b8a99737c
今回は…
全曲集めるのもいいけど…アーティストごとに曲を収集したいなぁ
わざわざ配列で指定するのもめんどくさいし…
…そや!アーティストごと集められるように改造しよう!
コード(コードが汚いのは実験中だからです。すみません…)
import requests
from bs4 import BeautifulSoup
import os
dic = "other"
url = ["134"]
for i in url:
uta_url = ""
memory = ""
load_url = f"https://www.uta-net.com/artist/{i}/"
html = requests.get(load_url)
soup = BeautifulSoup(html.content ,"html.parser")
uta_count = int(str(soup.select("span.f_style3:nth-child(2)")).replace('<span class="f_style3">',"").replace("</span>","").replace("[","").replace("]",""))
count = 1
for a in range(uta_count):
for element in soup.select(f".result_table > table:nth-child(1) > tbody:nth-child(2) > tr:nth-child({count}) > td:nth-child(1) > a:nth-child(1)"):
memory = element.get("href")
uta_url += memory + "\n"
count = count + 1
uta_url = uta_url.replace("/","").replace("song","")
uta_url = uta_url.split("\n")[:-1]
net = uta_url
for i in net:
kasi = ""
memory = ""
load_url = f"https://www.uta-net.com/song/{i}"
html = requests.get(load_url)
soup = BeautifulSoup(html.content ,"html.parser")
for element in soup.find_all(id="kashi_area"):
memory = element
memory = str(memory).replace('<div id="kashi_area" itemprop="text">', "").replace("</div>", "").replace("<br/>","\n")
print(memory)
kasi = memory
path = f"{dic}/歌詞{str(i)}.txt"
if not(os.path.isfile(f"{dic}/{path}")):
with open(path,"w",encoding="utf-8")as file:
file.write(str(kasi))
print(i)
print(uta_url)
やっていること(大雑把)
1 アーティストのURLを取得(今回はB'z
様の歌の歌詞)
2 歌詞が書いてあるURLを取得
3 そこから歌詞を取得
4 otherフォルダーに入れる
一見前やっていたこととほぼ同じに見えますが、ちょっと変えました。
変更点
1 歌詞が書いてあるhtmlコードに改行の<br />
を発見したのでreplace
でそれを\n
に置き換えるコードを設置
さらに便利に使えるようにしました。
今の問題点
・歌詞生成を同じアーティストの曲だけで学習しようとすると同じような文章になる
また、修正したらそれも上げていこうかなと思います。
このコードについて
調べたところ、このような歌詞解析・生成のPythonコードが調べてもあまり良いのが出てきませんでした。
なので、このコードでよければ、自由に使っていただいてokです!どんどん使ってください
※ただし僕のコードのリミックスを配布・配信するときは、
私のユーザー名(「kuroge」)と、右記のURL→https://qiita.com/kuroge/items/420e5c91606b6b31664c
をリミックスしたコードのコメントに書いてください。
ご視聴ありがとうございました!