中国大学排名的爬虫实战(结合信息组织与提取,两种方式实现)

功能描述

  • 输入:大学排名url链接
  • 输出:大学排名信息的屏幕输出(排名,大学名称,总分)
  • 技术路线:requests-bs4
  • 定向爬虫:仅对输入url进行爬取,不扩展爬取

我们使用requests-bs4提取信息时,提取到的只是静态脚本信息,只是展示在网络页面上的。

程序的结构设计

  • 步骤1:从网络上获取大学排名网页内容 getHTMLText()
  • 步骤2:提取网页内容中信息到合适的数据结构 fillUnevList()
  • 步骤3:利用数据结构展示并输出结构 printUnivList()

用于理解上述的程序设计结构,为视频讲解中的源代码(2016版):

import requests
from bs4 import BeautifulSoup
import bs4def getHTMLText(url):try:r = requests.get(url,timeout = 30)r.raise_for_stasus()r.encoding = r.apparend_encodingreturn r.textexcept:return ""def fillUnivList(ulist,html):soup = BeaurifulSoup(html,"html.parser")# 解析html代码中的tbody标签,获得子标签for tr in soup.find('tbody').children:if isinstance(tr,bs4.element.Tag):# 在tr标签中找到td标签,并将td标签中所需要的东西添加到列表里tds = tr('td')ulist.append([[tds[0],tds[1],tds[2]]])def printUnivList(ulist,num):  print("{:^10}\t{:^6}\t{:^10}".format("排名","学校","总分"))for i in range(num):u = ulistp[i]print("{:^10}\t{:^6}\t{:^10}".format(u[0],u[1],u[2]))def main():unifo = []url = "https://www.shanghairanking.cn/rankings/bcur/201611"html = getHTMLText(url)fillUnivList(unifo,html)printUnivList(unifo,20)main()

现对上述代码进行实现,并阐述自己的想法:

对html页面进行文本获取:

import requests
from bs4 import BeautifulSoup
import rehtml = 'https://www.shanghairanking.cn/rankings/bcur/2021'
try:r = requests.get(html)r.raise_for_status()r.encoding = r.apparent_encodingdemo = r.text
except:print(" ")
soup = BeautifulSoup(demo,'html.parser')
# print(soup)

此时,我们有两种想法。一、获取每一所大学的相关信息,并把他们存放在一个列表中。思路和视频中的代码类似。二、根据属性值获取每一个大学的内容,并将统一个属性值的放到一个列表中(具体思路可以参考信息组织与提取的文章https://blog.csdn.net/petrichor316/article/details/122647192)。

我们现给出第二种思路的代码:

# 获取a标签下的属性为name-cn的文本
name = soup.find_all('a','name-cn')
names = []
for i in name:names.append(i.text)
print(names)
# 获取div标签下的属性为ranking的文本
rank = soup.find_all('div',re.compile('ranking'))
ranks = []
for j in rank:ranks.append(j.text.strip())
print(ranks)
point = []
for tr in soup.tbody.children:u = (tr.text).split()point.append(u[-2])
print(point)

这种方法有一个弊端,就是没有很好的办法获取到没有属性值,且标签与无关信息的标签一致的信息。

输出如下结果:

接着,我们给出第一种思路的代码:

unis = []
# 找到tbody标签下的tr标签
for tr in soup.tbody.children:uni = []point = tr.children
# print(point.string.strip())# 在tr标签下获取一所大学的全部信息for k in point:# print(k)# print(k.text.strip())uni.append(k.text.strip())unis.append(uni)
print(unis)

如图所示:

现给出完整代码

import requests
from bs4 import BeautifulSoup
import rehtml = 'https://www.shanghairanking.cn/rankings/bcur/2021'
r = requests.get(html)
r.raise_for_status()
r.encoding = r.apparent_encoding
demo = r.textsoup = BeautifulSoup(demo,'html.parser')unis = []
for tr in soup.tbody.children:uni = []point = tr.children
# print(point.string.strip())for k in point:# print(k)# print(k.text.strip())uni.append(k.text.strip())unis.append(uni)
print(unis)print('{:^6}\t{:^15}\t{:^6}\t{:^6}\t{:^6}\t{:^6}'.format('排名','学校名称','省份','类型','总分','办学层次'))for uni in unis:print('{:^6}\t{:^15}\t{:^6}\t{:^6}\t{:^6}\t{:^6}'.format(uni[0],uni[1].split(' ')[0],uni[2],uni[3],uni[4],uni[5]))

中国大学排名的爬虫实战相关推荐

  1. python中国大学排名爬虫写明详细步骤-python网络爬虫入门实例:中国大学排名定向爬虫...

    中国大学排名定向爬虫的 设计和实现 一.环境安装: 1.选择一个适合自己的IDE(以下代码用Jupyter Notebook编写) 2.打开cmd,安装requests库和beautifulsoup4 ...

  2. python爬虫 2021中国大学排名定向爬虫

    最近的几篇博客来源是之前我下载的一个课件 在网上搜索了一下是一下这个课程的,可以结合视频博客以及代码去更好地学习 Python网络爬虫与信息提取_北京理工大学_中国大学MOOC(慕课) (icours ...

  3. 学习笔记:中国大学排名定向爬虫

    1. 学习视频 中国大学排名定向爬虫: https://www.bilibili.com/video/BV1pt41137qK?p=33&spm_id_from=pageDriver 2. 程 ...

  4. 嵩天《Python网络爬虫与信息提取》实例2:中国大学排名定向爬虫

    在介绍完requests库和robots协议后,嵩天老师又重点介绍了如何通过BeautifulSoup库进行网页解析和信息提取.这一部分就是在前面内容的基础上,综合运用requests库和Beauti ...

  5. 中国大学排名python爬虫_Python爬虫入门实例三之爬取软科中国大学排名

    写在前面 这个例子是笔者今天在中国大学MOOC(嵩天 北京理工大学)上学习的时候写下来的.但是很快写完之后我就发现不对劲,首先课程给的例子是中国好大学网站的排名,但是现在这个网站已经重构了,原来的链接 ...

  6. 嵩天老师的中国大学排名定向爬虫实例-萌新教程

    萌新实例,大佬们可以右上角了, 萌新可以看看互相学习 我是在是学习了<Python简明教程>还有廖雪峰老师的<Python3教程>后,才发现嵩天老师的视频的,简洁.生动.有趣, ...

  7. 中国大学排名定向爬虫以及淘宝商品爬虫参考嵩天老师Python爬虫课程遇到的问题及解决

    首先附上课程中程序,无法正常运行 把2016年的url更改为今年的url:http://www.shanghairanking.cn/rankings/bcur/2020 代码如下: import r ...

  8. Python爬虫入门之2022软科中国大学排名爬取保存到csv文件

    一.实验方案设计 1.获得"2022软科中国大学排名"数据,从[软科排名]2022年最新软科中国大学排名|中国最好大学排名网页中获得排名数据信息,并将数据保存到csv文件中. 2. ...

  9. Python爬虫系列(二):爬取中国大学排名丁香园-用户名和回复内容淘宝品比价

    Python爬虫系列(二):爬取中国大学排名&丁香园-用户名和回复内容&淘宝品比价 目录 Python爬虫系列(二):爬取中国大学排名&丁香园-用户名和回复内容&淘宝品 ...

最新文章

  1. 0基础培训java必须掌握的一些知识点
  2. 多线程EXecutor 柜架示例
  3. 微信小程序一些知识点
  4. 自学python的书-推荐6本学习Python的免费电子书
  5. asp.net 生成、解析条形码和二维码
  6. 【渝粤教育】国家开放大学2018年春季 0089-22TInternet和Intranet应用 参考试题
  7. Python+OpenGL使用Cohen-Sutherland算法实现直线裁剪
  8. .NET中过滤TextBox中输入的html标签
  9. python批量修改图片后缀名
  10. mysql给日期创建索引_如何在MySql的DATETIME字段的日期部分创建索引
  11. 【python】urlencode、quote、unquote
  12. 高数_第3章重积分_在柱面坐标下计算三重积分
  13. 韩国5G产品定价及营销策略剖析
  14. Fallout 4 辐射4 技巧统计
  15. 2012-2-15雨
  16. 产生socket write error的原因
  17. 大学计算机实验六文件管理与磁盘恢复,虚拟实验:文件管理与磁盘恢复.pdf
  18. 算法复习——分治法重点问题
  19. Java - 反转链表
  20. IE 在中国的春运刷票中又败了,Chrome扩展插件crx时代来临

热门文章

  1. 红旗linux shell方式下配置声卡的命令是:,‘红旗杯’linux大赛——基础知识2
  2. 史上最简单详细的Hadoop完全分布式集群搭建
  3. 6本最值得观看的,企业知识管理书籍清单出炉,附带工具推荐!
  4. Python matplotlib绘图模块操作大全
  5. DOCK软件测试大乐,科学网-Docking软件大比拼-袁曙光的博文
  6. 微信小程序报错{“errMsg“:“hideLoading:fail:toast can‘t be found“}
  7. windows cmd 打开相对路径下的网页文件
  8. 基于Java爬虫的课堂考勤管理系统(毕业设计论文)
  9. 陆奇终于自立门户!YC撤离中国,陆奇成立新基金接盘
  10. MPAndroidChart使用(个人笔记)