您的位置:首页 > 编程语言 > Python开发

python爬虫由浅入深7--基于中国大学排名的定向爬虫

2017-09-27 07:21 671 查看

功能描述:

基于中国大学排名网http://www.zuihaodaxue.cn/zuihaodaxuepaiming2017.html,抓取相关信息
输入:大学排名的url链接
输出:大学排名的屏幕输出(排名,大学名称,总分)
技术路线:requests和bs4
定向爬虫:仅对输入url进行爬取,无扩展

查看站点无robots.txt,则可知,定向爬虫可直接获取

程序的结构设计

1.从网络上获取大学排名的网页内容
2.提取网页内容中的信息到合适的数据结构
3.利用数据结构显示并输出结果

分析知,大学排名信息包括大学名称及各自对应的信息,故可用一个二维列表进行存储

网页分析

打开相关站点,查看对应的html信息





所需大学信息处于每一个<tr>标签中
所需具体信息处于每个<tr>标签下的<td>标签中,
故,可以全局查找特定标签锁定信息

代码实现

import requests
import bs4
from bs4 import BeautifulSoup

def getHTMMLText(url):
try:
r = requests.get(url,timeout = 30)
r.raise_for_status()
r.encoding = r.apparent_encoding
return r.text
except:
return ""
return ""

def fillUnivList(ulist,html):
soup = BeautifulSoup(html,"html.parser")
for tr in soup.find('tbody').children:
if isinstance(tr,bs4.element.Tag):
tds = tr('td')
ulist.append([tds[0].string,tds[1].string,tds[2].string])

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(i+1,u[1],u[2]))

def main():
uinfo = []
url = 'http://www.zuihaodaxue.cn/zuihaodaxuepaiming2017.html'
html = getHTMMLText(url)
fillUnivList(uinfo,html)
printUnivList(uinfo,20)
main()
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: