美文网首页程序员
你的大学榜上有名吗?requests爬虫简易入门实例,爬取中国大

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

作者: 谁的青春不迷茫_5c6a | 来源:发表于2020-05-17 09:14 被阅读0次

    运行结果

    运行结果

    数据来源:最好大学网

    说明

    • 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爬虫简易入门实例,爬取中国大

        本文链接:https://www.haomeiwen.com/subject/qtsjohtx.html