Pandas の read_html()
は table 要素を抽出しますが、今回の対象のウェブページは ul 要素で構成されています。
そのため、requests + BeautifulSoup を利用して li 要素内の span 要素を取り出します。
python
1import pandas as pd 2import requests 3from bs4 import BeautifulSoup 4 5def get_popular(url):6 # ページの内容を取得7 res = requests.get(url)8 res.raise_for_status()9 10 soup = BeautifulSoup(res.text, 'html.parser')11 artists = soup.select('span.artistName')12 songs = soup.select('span.songName')13 df = pd.DataFrame(columns=column_names)14 for artist, song in zip(artists, songs):15 df.loc[len(df)] = [artist.text, song.text]16 17 return(df)
0 コメント