Python爬虫入门实例三之爬取软科中国大学排名

写在前面

  这个例子是笔者今天在中国大学MOOC(嵩天 北京理工大学)上学习的时候写下来的。但是很快写完之后我就发现不对劲,首先课程给的例子是中国好大学网站的排名,但是现在这个网站已经重构了,原来的链接进去是软科的大学排名,所以之前的代码就需要做一些修改,在我不懈的努力下(各种瞎折腾,走了很多弯路),现在基本成功了,写这篇博客记录一下。
———————————————————————————————————————————————
(11.17更新,昨天晚上看到有小伙伴留言,说代码出了问题,我运行了一下发现确实有问题,看了下网站源代码,网站又进行了改动。于是我对代码也做了相应更改,主要就行将原来的string方法替换成了text方法,具体可以参考我的这篇博客
传送门: https://blog.csdn.net/weixin_44578172/article/details/109733042

一、爬取原界面

1.网站连接

链接:https://www.shanghairanking.cn/rankings/bcur/2020.

2.爬取内容

  本例爬取的是下图的排名、大学名称、总分三个内容。
在这里插入图片描述

二、编程思路

  这一部分嵩天老师在课中给出了讲解,这里我整理分享给大家。

1.功能描述

输入:大学排名URL链接

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

技术路线:requests­–bs4

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

注:requestts和bs4库的使用只能获取静态页面的信息,如何获取动态页面信息,我会在后边专门写篇文章详细说明

2.程序的结构设计

步骤一:从网络上获取大学排名网页内容:定义函数getHTMLText()

步骤二:提取网页内容中信息到合适的数据结构:定义函数fillUnivList()

步骤三:利用数据结构展示并输出结果:定义函数printUnivList()

三、编写函数

  在编写函数前,首先我们要先看一下网页的源代码
在这里插入图片描述
  通过对网页源代码的观察,我们可以看到,所有大学信息被封装在一个表格中,这个表格的标签叫tbody,在tbody中,每个大学的信息被封装在一个标签中,这个标签叫tr,每个tr标签里又有一个td标签,每个大学的具体信息就被这个标签包围,但是大学的名字是被包在a标签中的,这里要做处理。
  所以我们首先遍历tbody标签,获得所有大学信息,然后在tbody标签中找到tr标签,获得每个大学信息,最后在tr标签里找到td标签,把我们需要的相关数据写在我们的ulist列表中。

注:
  1.由于大学名称被a标签包含,所以我们可以定义一个列表存放a标签内容(与td标签区别开)。
  2.为了视觉方面更加美观,可采用中文字符的空格填充 chr(12288),其实就是为了对齐。

1.函数getHTMLText()

  从网络上获取大学排名网页内容。

def getHTMLText(url):#获取URL信息,输出内容
    try:
        r = requests.get(url,timeout = 30)
        r.raise_for_status()
        r.encoding = r.apparent_encoding
        return r.text
    except:
        return""

2.函数fillUnivList()

  提取网页内容中信息到合适的数据结构.

def fillUnivList(ulist,html):
评论 73
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我敲的贼快

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值