python大学排名数据分析案例_python案例-爬取大学排名

一个好玩的爬虫

明天就要考试了,就是不想复习,就想去写代码,学习编程!2018,第一炮。

技术路线:request-bs4

程序结构:

1.从网上获取大学排名 :getHTMLText()

2.提取网页内容到合适的数据结构中:fillUnivList()

3.利用合适的数据结构展示爬取的结果 :printUnivList()

源程序代码:

import requests #导入request库

import bs4 #导入bs4库,包括BeautifulSoup

#输入爬取的网址,输出爬取的内容

def getHTMLText(url):

try:

r=requests.get(url,timeout=30) #爬取的网址以及,反应时间

r.raise_for_status() #判断爬取是否异常

r.encoding=r.apparent_encoding #更改编码

return r.text #返回读取的内容

#异常的处理

except:

return ""

#将页面放到一个list列表中,

def fillUnivList(ulist,html):

#使用beautifulSoup对爬取的内容进行html解码

soup=BeautifulSoup(html,"html.parser")

#遍历tbody标签的孩子的tr标签

for tr in soup.find('tbody').children:

#对获取的tr标签进行判断是不是标签

if isinstance(tr,bs4.element.Tag):

tds=tr('td') #获取td标签,列表类型

#向定义的列表增加信息

ulist.append([tds[0].string,tds[1].string,tds[3].string])

#学校信息的打印,需要格式化输出

def printUnivList(ulist,num):

#表示填充时使用第三个变量,中文空格 chr(12288)

tplt="\t^10}\t"

#首先打印表头,居中对齐10个字符

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.com/zuihaodaxuepaiming2016.html' #大学排名的链接

html=getHTMLText(url) #调用函数,爬取网页

fillUnivList(uinfo,html) #将爬取的网页放到uinfo中

printUnivList(uinfo,20) #打印前20个大学排名信息

#程序入口

main()

网页结果

01

爬取显示结果

2

这里爬取的网页是静态文字内容,不适用JavaScript动态生成的,2017年的大学排名在本程序就不可以使用。这里还需要注意的是对于字符串的格式化输出,使用chr(12288),代表的是一个中文的空格键。作者小白,请多多指导!

你可能感兴趣的:(python大学排名数据分析案例_python案例-爬取大学排名)