1. 程式人生 > >爬取中國大學排名

爬取中國大學排名

看到結果真是傷心~~~~~。

import requests
from bs4 import BeautifulSoup
import bs4

def get_html(url):        #獲取網頁內容
    try:
        page=requests.get(url,timeout=30)
        page.status_code
        page.encoding=page.apparent_encoding   #讓編碼統一
        return page.text                       #返回文字形式
    except:
        return 'error'


def get_list(Ulist,html):
    soup=BeautifulSoup(html,'html.parser')        #解析網頁
    for tr in soup.find('tbody').children:        #查詢tbody所有的子結點
        if isinstance(tr,bs4.element.Tag):        #判斷是否是標籤型別
            tds=tr('td')                          #將tr裡的所有td賦給tds
            Ulist.append([tds[0].string,tds[1].string,tds[2].string,tds[4].string])     #將td標籤裡的所有內容加到Ulist列表裡
def print_list(Ulist,num):

    print("{0:^10}\t{1:{3}^10}\t{2:{5}^10}\t{4:^10}".format('排名','名稱','地點',chr(12288),'學生質量',chr(12288)))                                     #.format函式格式輸出
    for university in range(num):                       chr(12288)是中文空格的編碼,這裡使用中英文混排,使得排列整齊
        r=Ulist[university]
        #print("{0:^10}\t{1:{3}^10}\t{2:^10}".format(r[0],r[1],r[2],chr(12288)))


def Compaus_rank_search(Ulist,name):
    print("{0:^10}\t{1:{3}^10}\t{2:{5}^10}\t{4:^10}".format('排名', '名稱', '地點', chr(12288), '學生質量', chr(12288))) # .format函式格式輸出
    for university in range(600):
        r = Ulist[university]

        if r[1] == name:
            print("{0:^10}\t{1:{3}^10}\t{2:{5}^10}\t{4:^10}".format(r[0], r[1], r[2], chr(12288), r[3], chr(12288)))


def input_compaus_name(Ulist):
    while True:
        name=input("請輸入學校名稱:")
        Compaus_rank_search(Ulist,name)
Uli=[]
url='http://www.zuihaodaxue.cn/zuihaodaxuepaiming2018.html'
html=get_html(url)
get_list(Uli,html)
input_compaus_name(Uli)
#print_list(Uli,600)



很慘,好好學技術,我不想被溫水煮了。