python爬虫案例典型:爬取大学排名(亲测有效)

前言:

之前在课本上和csdn看到了这个爬取大学排名的案例,但照着案例打出的程序一直报错,后来一步一步根据网上资料分析程序后,不断改错后,终于实现了这个程序的编写。

一、程序展示

import requests
from bs4 import BeautifulSoup
import bs4
def getHTMLText(url):
    try:
        r = requests.get(url, timeout=30)
        r.raise_for_status()
        r.encoding = r.apparent_encoding
        return r.text
    except:
        return ""

def fillUnivLIst(ulist, html):
    soup = bs4.BeautifulSoup(html, "html.parser")
    for tr in soup.find('tbody').children:
        #检测tag类型,过滤非tag类型标签
        if isinstance(tr, bs4.element.Tag):
            tds = tr('td')
            ulist.append([str(tr('td')[0].contents[0]).strip(), tds[1].a.string, str(tr('td')[4].contents[0]).strip()])
    return ulist

def printUnivList(ulist, num):
    #tplt = "{0:^10}\t{1:{3}^6}\t{2:^10}"
    print("{:^10}\t{:^6}\t{:^10}".format("排名","学校名称","总分"))
#     print(tplt.format("排名","学校名称","总分",chr=(12288)))
    for i in range(num):
        u=ulist[i]
        print("{:^10}\t{:^6}\t{:^10}".format(u[0],u[1],u[2]))
#         print(tplt.format(u[0],u[1],u[2],chr=(12288)))
    
def main():
    ulist = []
    url = 'https://www.shanghairanking.cn/rankings/bcur/2020'
    html = getHTMLText(url)
    ulist = fillUnivLIst(ulist, html)
    printUnivList(ulist, 20)
    
    
main()

二、运行结果展示

python爬虫案例典型:爬取大学排名(亲测有效)_第1张图片

 

PS F:\pyptc>  & 'D:\python\python.exe' 'c:\Users\Lenovo\.vscode\extensions\ms-python.python-2021.9.1246542782\pythonFiles\lib\python\debugpy\launcher' '55760' '--' 'f:\pyptc\chongxin.py'
    排名         学校名称           总分    
1
清华大学 852.5
2
北京大学 746.7
3
浙江大学 649.2
4
上海交通大学 625.9
5
南京大学 566.1
6
复旦大学 556.7
7
中国科学技术大学 526.4
8
华中科技大学 497.7
9
武汉大学 488.0
10
中山大学 457.2
11
西安交通大学 452.5
12
哈尔滨工业大学 450.2
13
北京航空航天大学 445.1
14
北京师范大学 440.9
15
同济大学 439.0
16
四川大学 435.7
17
东南大学 432.7
18
中国人民大学 409.7
19
南开大学 402.1
20
北京理工大学 395.6

三、程序实现需要的几个函数库

requests和 bs4

其中requests库用来爬取网页内容,使用beautifulsoup4库分析网页中的数据,提取学校排名并且打印出来。

首先这两个库是要提前下载的:

需要我们使用cmd进入到我们python下载所在的文件中的Scripts文件中,输入下列指令下载即可

pip install requests
pip install beautifulsoup4

 

四、程序分析

简单分析一下这个程序,其实相对简单,主要由以下这几个主要的函数组成,

1.def getHTMLText(url):

(1).try.....except语句

这里用到了try except语句,其实这个语句的实现和if else差不多,一般使用其实现异常处理机制从而控制用户输入的常用方法。

 try:
    <语句>
except
    <语句>          #如果在try部份引发了名为'name'的异常,则执行这段代码
else:
    <语句>          #如果没有异常发生,则执行这段代码

(2)res = requests.get(url,headers=headers)  

向网站发起请求,并获取响应对象

参数

  • url :需要抓取的URL地址
  • headers : 请求头
  • timeout : 超时时间,超过时间会抛出异常

响应对象(res)属性

  • encoding :响应字符编码 res.encoding = 'utf-8'
  • text :字符串 网站源码
  • content :字节流 字符串网站源码
  • status_code :HTTP响应码
  • url :实际数据的URL地址

你可能感兴趣的:(python,python,爬虫)