第一次使用python3并开始掌握窍门。作为练习,我尝试从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)
你可以用一个计数器迭代,当计数器达到100时就停止,但是我不太喜欢这样,代码不再有用了,比如他们决定把元素的数量增加到200。我将使用一个简单的
try
块,如下所示:这是因为解析器找不到该项。在
来自BS4documentation:
您可以使用try块,但就个人而言,我更喜欢手动检查它:
相关问题 更多 >
编程相关推荐