你的大学榜上有名吗?requests爬虫简易入门实例,爬取中国大学排名

运行结果

运行结果

数据来源:最好大学网

说明

  • requests库是一个常用的用于http请求的模块,它使用python语言编写,可以方便的对网页进行爬取,是学习python爬虫的较好的http请求模块。
  • 如果你还没有安装这个库,只需要在命令行输入命令 pip install requests 即可安装
  • BeautifulSoup是一个用来解析网页的常用python第三方库,类似于javascript的DOM,如果你学过,我想你应该有点印象
  • 同样,如果你没有安装BeautifulSoup,只需要在命令行输入命令 pip install beautifulsoup4 即可安装。beautifulsoup4 是该库的第4个版本,是比较常用的一个版本

温馨提示:如果使用pip 经常因速度缓慢而安装失败的话,那么可能是因为软件源的原因。默认情况下,pip的软件源是国外的,所以速度很慢。如果想提高速度,最好换成国内的。你可以自己去找相关的教程,如果你懒得找或者比较急的话,可以看看这篇 更换国内软件源的教程

源代码

# 导入第三方库
import requests
# 注意:安装的时候是 beautifulsoup4, 导入的时候是 bs4
from bs4 import BeautifulSoup
import bs4

# 根据URL获取网页源代码
def getHTMLText(url):
    try:
        # 发起请求
        r = requests.get(url, timeout=30)
        # 当状态码不为200时,发出异常
        r.raise_for_status()
        r.encoding = r.apparent_encoding
        return r.text
    except:
        return ""

# 将HTML中的信息填充到二维列表
def fillUnivList(ulist, html):
    # 解析HTML
    soup = BeautifulSoup(html, 'html.parser')
    # 遍历HTML表格的行
    for tr in soup.find('tbody').children:
        if(isinstance(tr, bs4.element.Tag)):
            # 获取每行的所有列
            tds = tr('td')
            # 将排名,学校名称,得分插入到ulist列表中
            ulist.append([tds[0].string, tds[1].string, tds[3].string])

# 打印大学排名信息
def printUnivRank(ulist, num):
    # chr(12288) 表示中文空格
    print("{0:^10}\t{1:{3}^10}\t{2:^10}".format('排名','学校','得分',chr(12288)))
    # 遍历前num 个学校的信息
    for i in range(num):
        # 取出第i个大学的数据
        u = ulist[i]
        print("{0:^10}\t{1:{3}^10}\t{2:^10}".format(
            u[0], u[1], u[2], chr(12288)))

# 主函数
def main():
    # 保存大学信息的列表
    uinfo = []
    url = 'http://zuihaodaxue.com/zuihaodaxuepaiming2019.html'
    html = getHTMLText(url)
    fillUnivList(uinfo, html)
    # 20代表显示前20个大学,如果你想显示更多,可以修改这个数字
    printUnivRank(uinfo, 20)

# 执行主函数
main()

最后

  • 由于本人水平有限,出现错误或遗漏在所难免,希望读者朋友不吝赐教和批评指正

你可能感兴趣的:(你的大学榜上有名吗?requests爬虫简易入门实例,爬取中国大学排名)