-
功能描述
输入:大学排名URL http://www.zuihaodaxue.com/zuihaodaxuepaiming2019.html
输出:大学排名信息屏幕输出
技术路线:request-bs4
定向爬虫:仅对输入的URL进行爬取,不扩展爬取
-
程序的结构设计
步骤1:从网络上获取大学排名网页信息
步骤2:提取网页内容中的信息到合适的数据结构
步骤3:利用数据结构展示并输出结果
#中国大学排名定向爬虫实例
import requests
import bs4
from bs4 import BeautifulSoup
def getHTMLText(url):
try:
r = requests.get(url)
r.raise_for_status()
r.encoding = r.apparent_encoding
#print(r.text[:1000])
return r.text
except:
print("爬取失败")
#print(r.text[:1000])
return ""
def fillUnivList(ulist,html):
soup = BeautifulSoup(html,"html.parser")
for tr in soup.find("tbody").children:
#加个条件,过滤tr的子节点不是标签的情况
if isinstance(tr,bs4.element.Tag):
tds = tr.find_all("td")
#分别取排名、学校名、总分这几个字段的信息
ulist.append([tds[0].string,tds[1].string,tds[3].string])
pass
def printUnivList(ulist,num):
print("{:^10}\t{:^15}\t{:^10}\t".format("排名","学校","总分"))
for i in range(num):
u = ulist[i]
print("{:^10}\t{:^15}\t{:^10}\t".format(u[0],u[1],u[2]))
print("Suc"+ str(num))
def main():
uinfo = []
url = "http://www.zuihaodaxue.com/zuihaodaxuepaiming2019.html"
html = getHTMLText(url)
fillUnivList(uinfo,html)
printUnivList(uinfo,20)
main()
输出结果: