@myles
2017-04-13T08:50:21.000000Z
字数 2388
阅读 1867
python爬虫学习
技术路线:requests+BeautifulSoup
目标URL: http://www.zuihaodaxue.cn/zuihaodaxuepaiming2016.html
分析HTML
源码中存放大学排名的tag标签结构
<tbody class="hidden_zhpm" style="text-align:center;">
<tr class="alt">
<td>1</td>
<td><div align="left">清华大学</div></td>
<td>北京市</td><td>95.9</td><td class="hidden-xs need-hidden indicator5">100.0</td>
<td class="hidden-xs need-hidden indicator6" style="display:none;">97.90%</td>
<td class="hidden-xs need-hidden indicator7" style="display:none;">37342</td>
......
</tr>
<tr>
<td>2</td>
<td><div align="left">北京大学</div></td>
<td>北京市</td>
<td>82.6</td>
<td class="hidden-xs need-hidden indicator5">98.9</td><td class="hidden-xs need-hidden indicator6" style="display:none;">95.96%</td>
......
</tr>
......
<tbody>
<tbody>
<tr>
<td>1<td>
<td>清华大学<td>
<td>北京市<td>
<td>95.9</td>
......
<\tr>
<tr>
<td><td>
<td><td>
<td><td>
......
<\tr>
<tr>
<td><td>
<td><td>
<td><td>
......
<\tr>
......
<\tbody>
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Date : 2017-04-07 21:54:45
# @Author : myles
# @Version : $Id$
import requests
from bs4 import BeautifulSoup
import bs4
# 1.网页源码下载
def getHTMLText(_url):
try:
r = requests.get(_url)
r.raise_for_status()
r.encoding = r.apparent_encoding
return r.text
except:
return "getHTMLtext Error..."
# 2.大学排名数据提取,并存入列表
def getUnivList(_html,_Univlst):
soup = BeautifulSoup(_html,'html.parser')
for tr in soup.find('tbody').children: #注意find 与find_all使用场景不同
if isinstance(tr,bs4.element.Tag):
tds = tr.find_all('td')
_Univlst.append((tds[0].string,tds[1].string,tds[3].string))
# 3.打印输出大学排名输出(前20)
def printUnivLst(_Univlst, _num):
tplt = "{0:^10}\t{1:{3}^10}\t{2:^10}"
print(tplt.format("排名","学校名称","总分",chr(12288)))
for x in range(_num):
u = _Univlst[x]
print(tplt.format(u[0],u[1],u[2],chr(12288)))
"""
def printUnivLst(_Univlst):
tplt = "{0:^10}\t{1:{3}^10}\t{2:^10}"
print(tplt.format("排序","大学名称","总分",chr(12288)))
for x in range(len(_Univlst)):
u = _Univlst[x]
print(tplt.format(u[0],u[1],u[2],chr(12288)))
"""
# 4.定义主函数
def main():
url = "http://www.zuihaodaxue.cn/zuihaodaxuepaiming2016.html"
Univlst = []
num = 20
html = getHTMLText(url)
getUnivList(html,Univlst)
printUnivLst(Univlst,num)
#printUnivLst(Univlst)
# 5. 调用主函数
main()
排名 学校名称 总分
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