欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Python爬虫:2020年中国大学排名,40行代码搞定

程序员文章站 2024-03-16 14:26:04
...

前段时间学习爬虫,写了一个2019年中国大学排行的爬虫
今天运行了一下,发现报错了,去页面一看,原来地址都换了,页面也改版了
顺便改一下代码贴上来,欢迎大佬指导和探讨
Python爬虫:2020年中国大学排名,40行代码搞定

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

打印结果如下:
Python爬虫:2020年中国大学排名,40行代码搞定

相关标签: Python爬虫 python