博客
关于我
爬虫(5)—— 获取中国大学排名
阅读量:332 次
发布时间:2019-03-04

本文共 1519 字,大约阅读时间需要 5 分钟。

爬虫案例视频讲解

功能描述

输入:大学排名url链接

输出:大学排名信息的屏幕输出(排名、大学、总分)

技术路线:requests、bs4

定向爬虫:仅对输入url进行爬取,不扩展爬取


程序结构设计

步骤1:从网络上获取大学排名网页内容

函数getHTMLText(url)

  • 使用requests库发送GET请求,获取指定url的网页内容
  • 设置请求超时为30秒,确保网络请求可靠
  • 指定编码方式,避免字符编码问题
  • 返回获取到的网页内容

步骤2:提取网页内容中信息到合适的数据结构

函数fillUnivList(ulist, html)

  • 使用BeautifulSoup解析网页内容
  • 定位到<tbody>标签,筛选出大学排名信息
  • 遍历每一行<tr>,提取每行的<td>标签内容
  • 将提取到的信息存储到ulist数据结构中

步骤3:利用数据结构展示并输出结果

函数printUnivList(ulist, num)

  • 打印表头,确保排名、学校名称、总分对齐一致
  • 根据指定的num,输出前num名大学排名信息

完整代码

import requestsfrom bs4 import BeautifulSoupdef 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')    for tr in soup.find('tbody').children:        if isinstance(tr, BeautifulSoup.element.Tag):            tds = tr.find_all('td')            if tds:                ulist.append([tds[0].string, tds[1].string, tds[2].string])def printUnivList(ulist, num):    tplt = "{0:^10}\t{1:{3}^10}\t{2:^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.cn/zuihaodaxuepaiming2019.html'    html = getHTMLText(url)    fillUnivList(uinfo, html)    printUnivList(uinfo, 20)if __name__ == "__main__":    main()

中英文对齐问题

本案例的核心逻辑是从指定url获取大学排名页面内容,提取排名、学校名称和总分信息,存储到数据结构中,最后按格式输出结果。代码逻辑清晰,注重数据处理的细节,确保爬取的内容准确无误。

转载地址:http://bsgh.baihongyu.com/

你可能感兴趣的文章
Go 数组&切片
查看>>
Go 文件操作
查看>>
drf Serializer基本使用
查看>>
老Python总结的字典相关知识
查看>>
深入理解 ZK集群的Leader选举
查看>>
计算机的运算方法
查看>>
谈谈MySQL的基数统计
查看>>
大型面试现场:一条update sql执行都经历什么?
查看>>
自导自演的面试现场之--你竟然不了解MySQL的组提交?
查看>>
ajax 处理请求回来的数据
查看>>
简单单页面路由跳转demo
查看>>
vue 不常见操作
查看>>
jQuery的事件绑定与触发 - 学习笔记
查看>>
解决页面加载闪白问题-背景图片加载优化
查看>>
Python处理接口测试的签名
查看>>
测试流程规范--测试报告模板
查看>>
测试流程规范--提测规范(钉钉、邮件)
查看>>
Linux上TCP的几个内核参数调优
查看>>
解Bug之路-dubbo流量上线时的非平滑问题
查看>>
记一次讲故事机器人的开发-我有故事,让机器人来读
查看>>