
爬虫(5)—— 获取中国大学排名
发布日期:2021-05-07 08:57:22
浏览次数:16
分类:精选文章
本文共 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获取大学排名页面内容,提取排名、学校名称和总分信息,存储到数据结构中,最后按格式输出结果。代码逻辑清晰,注重数据处理的细节,确保爬取的内容准确无误。
发表评论
最新留言
感谢大佬
[***.8.128.20]2025年04月06日 09时51分56秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
选择性估算器绕过行安全策略漏洞
2021-05-08
对PostgreSQL数据库结构的宏观理解
2021-05-08
查询某表格上次进行vacuum的时间
2021-05-08
invalid byte sequence for encoding
2021-05-08
聊一聊那些应该了解的大佬(飞控,人工智能方向)
2021-05-08
redis向数组中添加值并查看数组长度
2021-05-08
JS编写一个函数,计算三个不同数字的大小,按从小到大顺序打印(穷举法)
2021-05-08
sqlplus的基本使用
2019-03-05
Oracle删除主表数据
2019-03-05
Oracle常用SQL
2019-03-05
技术美术面试问题整理
2019-03-05
C++学习记录 五、C++提高编程(2)
2019-03-05
4 Java 访问控制符号的范围
2019-03-05
VUE3(八)setup与ref函数
2019-03-05
Vue之Element标签页保留用户操作缓存。
2019-03-05
智能合约开发实践(1)
2019-03-05
MATLAB——操作矩阵的常用函数
2019-03-05
CMake自学记录,看完保证你知道CMake怎么玩!!!
2019-03-05
ORB-SLAM2:LoopClosing线程学习随笔【李哈哈:看看总有收获篇】
2019-03-05
牛客练习赛56 D 小翔和泰拉瑞亚(线段树)
2019-03-05