初めての Python 3 ユーザーで、コツをつかみ始めています。演習として、 http://rateyourmusic.com/customchartからテーブル (BeautifulSoup4 を使用) を読み取り、ランク、アーティスト、アルバム、および年を辞書に変換しようとしています。次に、辞書をMySQLデータベースに入れたいと思います。テーブルからすべての情報を取得して変数に入れ、それを辞書に入れることができましたが、少し問題があります。表の最後のエントリは広告であるため、その上の他の表の行には従いません。テーブルの最初の 100 行のみを読み取りたい。広告行を読み込もうとするとエラーが発生します。
これが私のコードです。どんな助けでも素晴らしいでしょう。また、私のコードにエラーがある場合や、どうすればもっとうまくやれたか教えてください。
辞書を印刷していて、すべて問題ないように見えますが、すべてを印刷した後にエラーが発生します。
from bs4 import BeautifulSoup
from urllib.request import Request, urlopen
url = "http://rateyourmusic.com/customchart"
req = Request(url, headers={'User-Agent': 'Mozilla/5.0'})
soup = BeautifulSoup(urlopen(req))
table = soup.find("table", {"class" : "mbgen"})
totalList = []
for row in table.findAll("tr"):
cells = row.findAll("td")
rank = int(cells[0].find(class_="ooookiig").text)
artist = cells[2].find(class_="artist").text
album = cells[2].find(class_="album").text
year = cells[2].find(class_="mediumg").text
year = int(year[1:5])
chartData = {"Rank":rank, "Artist":artist, "Album":album, "Year":year}
totalList.append(chartData)
print(chartData)