LoginSignup
0
1

More than 1 year has passed since last update.

Pythonで歌詞を集めて軽く分析してみた話#4

Posted at

前回
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
をリミックスしたコードのコメントに書いてください。

ご視聴ありがとうございました!

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1