Dec-06-2020, 10:56 PM
In line 16 where it says "for tr in soup.find("tbody").children:", it keeps telling me that there is no such attribute. The code in the example video works just fine. Can someone please help?
import requests from bs4 import BeautifulSoup import bs4 def getHtmlText(url): try: r = requests.get(url) r.raise_for_status() r.encoding = r.appearent_encoding return r.text except: return "" def fillUniversList(ulist, html): soup = BeautifulSoup(html, "html.parser") for tr in soup.find("tbody").children: if isinstance(tr, bs4.element.Tag): tds = tr("td") ulist.append([tds[1].children.string, tds[2].string, tds[3].string, tds[4].string]) def printUniversList(ulist, num): print("{:^10}\t{:^10}\t{:10}".format("rank", "name", "location")) for i in range(num): u = ulist[i] print("{:^10}\t{:^10}\t{:^10}".format(u[0], u[1], u[2])) print("Suc" + str(num)) def main(): url = 'https://www.shanghairanking.cn/rankings/bcur/2020' uinfo = [] html = getHtmlText(url) fillUniversList(uinfo, html) printUniversList(uinfo, 20) main()