Python爬虫:2020年中国大学排名,40行代码搞定
程序员文章站
2024-03-16 14:26:04
...
前段时间学习爬虫,写了一个2019年中国大学排行的爬虫
今天运行了一下,发现报错了,去页面一看,原来地址都换了,页面也改版了
顺便改一下代码贴上来,欢迎大佬指导和探讨
import requests
from bs4 import BeautifulSoup as bs
import bs4
def get_text(url):
try:
r = requests.get(url, timeout=30)
r.raise_for_status()
r.encoding = r.apparent_encoding
return r.text
except:
return '爬虫异常'
def fill_list(u_list, html):
soup = bs(html, 'html.parser')
for tr in soup.find('tbody').children:
if isinstance(tr, bs4.element.Tag):
tds = tr('td')
u_list.append([tds[0].text, tds[1].text, tds[4].text])
return u_list
def print_list(u_list, num):
# chr 12288 强制填充中文空格,解决中英文空格填充导致的排列不齐
tplt = '{0:^ 10}\t{1:{3}^ 20}\t{2:^ 2}'
print(tplt.format('排名', '学校名称', '总分', chr(12288)))
for i in range(num):
u = u_list[i]
print(tplt.format(u[0].strip(), u[1].strip(), u[2].strip(), chr(12288)))
if __name__ == '__main__':
u_info = []
url = 'http://www.shanghairanking.cn/rankings/bcur/2020'
html = get_text(url)
fill_list(u_info, html)
print_list(u_info, len(u_info))
打印结果如下: