萌新实例,大佬们可以右上角了, 萌新可以看看互相学习

我是在是学习了《Python简明教程》还有廖雪峰老师的《Python3教程》后,才发现嵩天老师的视频的,简洁、生动、有趣,有时候还挺萌的,要是能早点知道嵩天老师,我觉的学习时间应该能减少少一半,不是说其他的不好,只是更喜欢嵩天老师的讲解

给嵩天老师打个广告,非常有意思的教程,这里是爬虫教程,里面还有Python基础教程,大家自己去挖掘下

https://www.icourse163.org/course/BIT-1001870001

和大家分享嵩天老师的实例,一是为了巩固自己的知识点,而是为了给像我一样的人安利下嵩天老师

任务目标

爬取中国最好大学排名的前30个排名

任务分解

嵩天老师在这里将任务分成了好几块,为了方便大家理解

我这里按嵩老师思路分成三大块,代码缩进可以参考后面的,完全代码

第一步:写框架

# 用get方法获取HTML信息

def getHTMLText(url)

return" "

# 将获取到的html放在自己定义的ulist中

def fillUnivList(ulist, html)

pass

# 将获取到的ulist信息打印出来,num在这里指要排名多少学校,可以自有填写

def printUnivList(ulist, num)

print("Suc" + str(num))

第二步:完善函数

先写main函数

def main():# 将大学信息写进列表中,定义列表名uinfouinfo = []# 给出url地址信息url = "http://www.zuihaodaxue.com/zuihaodaxuepaiming2018.html"# 用requests库中的get方法,将url信息转换成HTML信息html = getHTMLText(url)# 将提取的信息放在uinfo变量中fillUnivList(uinfo, html)# 打印大学信息,我们给出的排名信息是前30位printUnivList(uinfo, 30)
main()

然后再完善上面的的三个框架函数

完善getHTMLText函数

def getHTMLText(url):# 是用try...except 完成结构框架,方便调试try:r = requests.get(url, timeout=30)# 获取状态码r.raise_for_status()# 因为有中文,所以需要转换编码r.encoding = r.apparent_encoding# 返回给程序return r.textexcept:print("产生异常")return

完善fillUnivList函数

这里又开始使用beautifullsoup提取html信息中关键的数据,并添加到列表中

通过网页查看源码,我们发现,所有的信息被封装在<tbody>标签里,每一个大学信息又被封装在<tr>标签里,<tr>标签包含了当前大学的数据信息,每个大学的<tr>又被<td>所包围

先找到<tbody>标签,获取所有大学信息

再找到<tbody>标签里的<tr>标签,获取每一个大学的信息

再找到<tr>标签里的<td>标签,将大学所有属性写到ulist里

这里主要使用的是bs4库中的遍历和查找方法

还需要注意的是,因为要过滤的其他信息,所以用isinstace函数做判断,

# 将获取到的html放在自己定义的ulist列表中
def fillUnivList(ulist, html):# 使用bs4库解析网页soup = BeautifulSoup(html, "html.parser")# 使用for语句遍历查找tbody下的孩子标签,for tr in soup.find('tbody').children:# 检测ts标签,如果tr标签不是bs4定义的tag类型,将过滤掉if isinstance(tr, bs4.element.Tag):# tr标签查询完后,需要查询td标签,并将td标签存在tds里,tds = tr('td')# ulist 里添加我们需要的信息,分别是大学名称,大学排名,大学评分ulist.append([tds[0].string, tds[1].string, tds[2].string])

第三步,打印大学信息

打印大学信息时,需要有表头,这里时用print函数实现

format输出格式函数,需要自己下去找资料学习下

def printUnivList(ulist, num):# 定义输出模板的变量,并增加宽度设定# {3}表示打印输出时,需要填充时使用format函数的第三个变量进行填充,也就是使用中文空格进行填充tplt = "{0:^10}\t{1:{3}^10}\t{2:^10}"# 定义输出格式,如果看不懂可以去搜下format函数,学习下print(tplt.format("排名", "学校名称", "评分", chr(12288)))# 将dr信息用简短的变量u来代替,并用for...in 将每所学校信息打印出来for i in range(num):u = ulist[i]print(tplt.format(u[0], u[1], u[2], chr(12288)))print("Suc" + str(num))

完全体提代码

需要注意的是,这里需要的是三个库,requests库,BeautifulSoup4库的BeautifulSoup方法,以及BeautifulSoup4库

import requests
from bs4 import BeautifulSoup
import bs4# 定义获取网页信息
def getHTMLText(url):# 是用try...except 完成结构框架,方便调试# noinspection PyBroadException# pycharm会报提示,过于宽泛,需要指定精准 except,强迫症必须要解决try:r = requests.get(url, timeout=30)# 获取状态码r.raise_for_status()# 因为有中文,所以需要转换编码r.encoding = r.apparent_encoding# 返回给程序return r.textexcept:print("产生异常")return ""# 使用beautifullsoup提取html信息中关键的数据,并添加到列表中# 将获取到的html放在自己定义的ulist列表中
def fillUnivList(ulist, html):# 使用bs4库解析网页soup = BeautifulSoup(html, "html.parser")# 使用for语句遍历查找tbody下的孩子标签,for tr in soup.find('tbody').children:# 检测tr标签,如果tr标签不是bs4定义的tag类型,将过滤掉if isinstance(tr, bs4.element.Tag):# tr标签查询完后,需要查询td标签,并将td标签存在tds里,tds = tr('td')# ulist 里添加我们需要的信息,分别是大学名称,大学排名,大学评分ulist.append([tds[0].string, tds[1].string, tds[2].string])# 将获取的ulist信息打印出来,num是指需要多少个学校
def printUnivList(ulist, num):# 定义输出模板的变量,并增加宽度设定# {3}表示打印输出时,需要填充时使用format函数的第三个变量进行填充,也就是使用中文空格进行填充tplt = "{0:^10}\t{1:{3}^10}\t{2:^10}"# 定义输出格式,如果看不懂可以去搜下format函数,学习下print(tplt.format("排名", "学校名称", "评分", chr(12288)))# 将dr信息用简短的变量u来代替,并用for...in 将每所学校信息打印出来for i in range(num):u = ulist[i]print(tplt.format(u[0], u[1], u[2], chr(12288)))print("Suc" + str(num))def main():# 将大学信息写进列表中,定义列表名uinfouinfo = []# 给出url地址信息url = "http://www.zuihaodaxue.com/zuihaodaxuepaiming2018.html"# 用requests库中的get方法,将url信息转换成HTML信息html = getHTMLText(url)# 将提取的信息放在uinfo变量中fillUnivList(uinfo, html)# 打印大学信息,我们给出的排名信息是前30位printUnivList(uinfo, 30)main()

嵩天老师的中国大学排名定向爬虫实例-萌新教程相关推荐

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

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

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

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

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

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

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

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

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

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

  6. 中国大学排名的爬虫实战

    中国大学排名的爬虫实战(结合信息组织与提取,两种方式实现) 功能描述 输入:大学排名url链接 输出:大学排名信息的屏幕输出(排名,大学名称,总分) 技术路线:requests-bs4 定向爬虫:仅对 ...

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

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

  8. 第一个爬虫程序之定向爬取中国大学排名(收获良多,不仅仅是写个程序,更是编程的步骤方法)

    第一个爬虫程序之定向爬取中国大学排名(收获良多,不仅仅是写个程序,更是编程的想法) 名称:定向爬取--中国大学排名定向爬取 首先,爬之前,看看你要定向爬取的网站和数据是什么类型的? 打开你要爬取网站, ...

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

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

最新文章

  1. 基于ESP8266 WiFi控制的步进升降机械平台
  2. c++ *.h和*.cpp在编译中的作用
  3. 使用 Azure DevTest Lab 搭建云端开发测试环境
  4. UVA - 1388 Graveyard 【数学】
  5. cvtcolor python opencv_13行代码实现:Python实时视频采集(附源码)
  6. mysql5.5主从同步复制配置
  7. 执行cmd并获得结果_用JAVA执行CMD命令备份PG数据库,解决需要口令的问题
  8. Study From Work(2011-3-2)
  9. qq发压缩文件服务器拒绝,QQ不能接收和发送RAR压缩文件是怎么回事?急求解决方法!...
  10. 渗透测试常用WEB安全漏洞扫描工具推荐
  11. 去掉WPS智能生成目录中的空白行
  12. 语句摘抄——第28周
  13. 服装行业ERP系统有哪些基本功能?
  14. 双Nmos管驱动电路
  15. python富翁与穷人_穷人和富人最根本的区别
  16. Python 爬虫:把廖雪峰的教程转换成 PDF 电子书
  17. 51单片机实战教程(22 看门狗)
  18. 一个有趣的实验之OSPF中RID相同建邻
  19. Kotlin 中的 appy和with方法
  20. ITE平台之UI开发01-注意事项

热门文章

  1. swagger详解(全)
  2. 大型系统演进缩影(一)
  3. 解决 ‘无法启动承载网络 组或资源的状态不是执行请求操作的正确状态’
  4. 淘宝 npm 源将在 2022 年 5 月 31 日更换域名服务
  5. 五种常见 Linux 系统安装包管理工具中文使用指南
  6. qmake 手册:qmake 入门
  7. win10自动修复失败无法开机[完美解决]2021
  8. java socket重连_Java客户端Socket在服务端重启后的异常情况处理
  9. 电脑服务器出现内存错误的信息,内存异常会出现什么问题
  10. 错觉设计_做出以数据为依据的决策的错觉