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()
