天天看點

定向爬蟲-中國大學MOOC-python網絡爬蟲執行個體format格式化輸出程式大體架構

定向爬蟲:僅對輸入URL進行爬取,不擴充爬取

中國大學排名2018

定向爬蟲-中國大學MOOC-python網絡爬蟲執行個體format格式化輸出程式大體架構

format格式化輸出

定向爬蟲-中國大學MOOC-python網絡爬蟲執行個體format格式化輸出程式大體架構

看下所需資訊位置

定向爬蟲-中國大學MOOC-python網絡爬蟲執行個體format格式化輸出程式大體架構

程式大體架構

import requests
from bs4 import BeautifulSoup

def getHTMLText(url):
	return ""


def fillUnivList(ulist,html):
	pass


def printUnivList(ulist,num):
	print("Suc"+str(num))

def main():
	uinfo = []
	url = ""
	html = getHTMLText(url)
	fillUnivList(uinfo,html)
	printUnivList(uinfo,10)

main()           

複制

getHTMLText()

def GetHTMLText(url):       #擷取網頁内容
	try:
		r = requests.get(url)
		r.raise_for_status()   #用于捕獲異常
		r.encoding = r.apparent_encoding
		return r.text
	except:	
	    return ""           

複制

fillUnivList()

def fillUnivList(ulist, html):         # 把網頁内容放到資料結構中
    soup = BeautifulSoup(html,"html.parser")
    '''一個tr标簽存放一所大學的資訊'''
    for tr in soup.find("tbody").children:
        if isinstance(tr,bs4.element.Tag):  #僅僅周遊标簽,過濾掉非标簽類型的其它資訊
            tds = tr('td')  #将所有的td标簽存放到清單tds中,等價于tr.find_all('td')傳回一個清單類型
            '''由于進行了周遊,使用print列印tds會得到多個清單'''
            ulist.append([tds[0].string, tds[1].string, tds[3].string])#向ulist中增加所需要的資訊           

複制

printUnivList()

def printUnivlist(ulist, num):
    print("{:^10}\t{:^6}\t{:^10}".format("排名","學校","總分"))
    for i in range(num):
        u = ulist[i]
        print("{:^10}\t{:^6}\t{:^10}".format(u[0],u[1],u[2]))           

複制

main

import requests
import bs4   # 用到instance
from bs4 import BeautifulSoup

def GetHTMLText(url):       #擷取網頁内容
	try:
		r = requests.get(url)
		r.raise_for_status()   #用于捕獲異常
		r.encoding = r.apparent_encoding
		return r.text
	except:	
	    return ""


def fillUnivList(ulist, html):         # 把網頁内容放到資料結構中
    soup = BeautifulSoup(html,"html.parser")
    '''一個tr标簽存放一所大學的資訊'''
    for tr in soup.find("tbody").children:
        if isinstance(tr,bs4.element.Tag):  #僅僅周遊标簽,過濾掉非标簽類型的其它資訊
            tds = tr('td')  #将所有的td标簽存放到清單tds中,等價于tr.find_all('td')傳回一個清單類型
            '''由于進行了周遊,使用print列印tds會得到多個清單'''
            ulist.append([tds[0].string, tds[1].string, tds[3].string])#向ulist中增加所需要的資訊

def printUnivlist(ulist, num):
    print("{:^10}\t{:^6}\t{:^10}".format("排名","學校","總分"))
    for i in range(num):
        u = ulist[i]
        print("{:^10}\t{:^6}\t{:^10}".format(u[0],u[1],u[2]))

def main():
    uinfo = []
    url = "http://www.zuihaodaxue.cn/zuihaodaxuepaiming2018.html"
    html = GetHTMLText(url)
    fillUnivList(uinfo,html)
    printUnivlist(uinfo,10)

main()           

複制

定向爬蟲-中國大學MOOC-python網絡爬蟲執行個體format格式化輸出程式大體架構

代碼優化,使用chr(12288)解決中文對齊問題

import requests
import bs4   # 用到instance
from bs4 import BeautifulSoup

def GetHTMLText(url):       #擷取網頁内容
	try:
		r = requests.get(url)
		r.raise_for_status()   #用于捕獲異常
		r.encoding = r.apparent_encoding
		return r.text
	except:	
	    return ""


def fillUnivList(ulist, html):         # 把網頁内容放到資料結構中
    soup = BeautifulSoup(html,"html.parser")
    '''一個tr标簽存放一所大學的資訊'''
    for tr in soup.find("tbody").children:
        if isinstance(tr,bs4.element.Tag):  #僅僅周遊标簽,過濾掉非标簽類型的其它資訊
            tds = tr('td')  #将所有的td标簽存放到清單tds中,等價于tr.find_all('td')傳回一個清單類型
            '''由于進行了周遊,使用print列印tds會得到多個清單'''
            ulist.append([tds[0].string, tds[1].string, tds[3].string])#向ulist中增加所需要的資訊


'''def printUnivlist(ulist, num):
    print("{:^10}\t{:^6}\t{:^10}".format("排名","學校","總分"))
    for i in range(num):
        u = ulist[i]
        print("{:^10}\t{:^6}\t{:^10}".format(u[0],u[1],u[2]))
'''
'''優化輸出格式,中文對齊問題,使用chr(12288)表示一個中文空格,utf-8編碼'''
def printUnivlist(ulist, num):
    tplt = "{0:^10}\t{1:{3}^10}\t{2:^10}"   #輸出模闆,{3}使用format函數第三個變量進行填充,即使用中文空格進行填充
    print(tplt.format("排名","學校","總分",chr(12288)))
    for i in range(num):
        u = ulist[i]
        print(tplt.format(u[0],u[1],u[2],chr(12288)))

def main():
    uinfo = []
    url = "http://www.zuihaodaxue.cn/zuihaodaxuepaiming2018.html"
    html = GetHTMLText(url)
    fillUnivList(uinfo,html)
    printUnivlist(uinfo,10)

main()           

複制

定向爬蟲-中國大學MOOC-python網絡爬蟲執行個體format格式化輸出程式大體架構