概述
爬取内容:中国最好的大学排名
输入:大学排名网页的url输入
输出:大学排名信息的屏幕输出
技术路线:requests,bs4
step1:从网络爬取网页内容
step2:提取网页信息到合适的数据结构
step3:利用数据结构展示并输出结果
URL:http://www.zuihaodaxue.cn/zuihaodaxuepaiming2017.html
查看robots协议:http://www.zuihaodaxue.cn/robots.txt
代码:
import requests
import bs4
from bs4 import 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 ''
def fillUnivList(ulist,html):
soup=BeautifulSoup(html,'html.parser')
# 检查网页代码可以发现数据都储存在tboyd标签中,这里需要对tbody的儿子节点进行遍历
for tr in soup.find('tbody').children:
# 检测标签类型,如果不是bs4库支持的Tag类型,就过滤掉,这里需要先导入bs4库
if isinstance(tr,bs4.element.Tag):
# 解析出tr标签中的td标签后,将其储存在列表tds中
tds=tr('td')
# 我们需要的是排名、学校名称和总分
ulist.append([tds[0].string,tds[1].string,tds[3].string])
def printUnivList(ulist,num):
#定义输出模板为变量tplt,t为横向制表符,10为每列的宽度
tplt="{0:^10}t{1:{3}^10}t{2:^10}"
print(tplt.format('排名','学校名称','总分',chr(12288)))
#
{:^10}表示取10位居中对齐
for i in range(num):
u=ulist[i]
print(tplt.format(u[0],u[1],u[2],chr(12288)))
if __name__=='__main__':
uinfo=[]
url='http://www.zuihaodaxue.cn/zuihaodaxuepaiming2016.html'
html=getHTMLText(url)
fillUnivList(uinfo,html)
printUnivList(uinfo,20)
#打印20所学校的信息
结果:
排名
学校名称
总分
1
清华大学
95.9
2
北京大学
82.6
3
浙江大学
80
4
上海交通大学
78.7
5
复旦大学
70.9
6
南京大学
66.1
7
中国科学技术大学
65.5
8
哈尔滨工业大学
63.5
9
华中科技大学
62.9
10
中山大学
62.1
11
东南大学
61.4
12
天津大学
60.8
13
同济大学
59.8
14
北京航空航天大学
59.6
15
四川大学
59.4
16
武汉大学
59.1
17
西安交通大学
58.9
18
南开大学
58.3
19
大连理工大学
56.9
20
山东大学
56.3
最后
以上就是英俊小蘑菇为你收集整理的爬虫中国最好的大学排名的全部内容,希望文章能够帮你解决爬虫中国最好的大学排名所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复