这个例子比较简单也容易理解,我将细致的解析这个例子中算法流程。写一个博客算是给自己一个激励吧。一起加油。(_ZHJ三月和九月)

完整版代码


import requests
from bs4 import BeautifulSoup
import bs4def getHTMLText(url):try:r=requests.get(url,timeout=30)r.raise_for_status()r.encoding=r.apparent_encodingreturn r.textexcept:return ""def fillUnivList(ulist,html):soup=BeautifulSoup(html,"html.parser")for tr in soup.find('tbody').children:if isinstance(tr,bs4.element.Tag):tds=tr('td')ulist.append([tds[0].string,tds[1].string,tds[3].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)))print("Suc"+str(num))def main():uinfo=[]url='http://www.zuihaodaxue.com/zuihaodaxuepaiming2019.html'html=getHTMLText(url)fillUnivList(uinfo,html)printUnivList(uinfo,20)main()

输出结果

  1. Python爬虫素材

本实例爬取的页面链接(2019年中国最好大学排行榜)

  • 获取url路径
    首先我们在浏览器中搜索“最好大学网”进入最新一年的大学排名

    保存此网页的url链接地址
    我们想做的事是打印最好大学排名的前二十个信息。从图中可以看到原网页展示的是大学的排名,姓名,省份,总分和生院质量评分等信息。而如果我们只想输出第一、二、四列的信息又该如何呢?在开始实例前进行代码的功能定义:

功能描述

输入:大学排名URL链接
输出:大学排名信息的屏幕输出(排名、大学名称、总分)
技术路线:requests-bs4
本实例属于定向爬虫:仅对输入URL进行爬取,不扩展爬取
备注:在判断定向爬虫是否可行时,我们需要对网页的源代码进行分析,如果源代码中出现了如“清华大学”“94.6”等我们目标的输出信息时则可以。其余情况如用脚本语言写的页面信息可能动态提取,此时定向爬虫就失效了。在爬取的网页右击查看源代码。
我们还需要注意的是当前网站爬虫要遵守的规则,即查看网站的Robots协议(robots协议是在网站根目录后加一个/robots.txt就行)查看方法在浏览器上方输入:http://www.zuihaodaxue.com/robots.txt我们可以看到该网站并未对爬虫进行限制,因此我们可以爬虫。

代码详细解析

  1. 首先导入三个库 requests、Beautiful Soup、bs4
import requests  #请求的作用,简单理解就是向网页请求url链接,进而爬取它
from bs4 import BeautifulSoup#这个BeautifulSoup库是对网页的一个排版美化的作用,给原始网页html换行加缩近使其看着更舒适,学过前端的都很容易理解
import bs4  #在第二个方法中用到了bs4的标签定义函数element
  1. 进入程序的结构设计
  • 获取大学排名网页内容——getHTMLText()方法
  • 提取大学排名网页信息并存放进合适的列表里——fillUnivList()方法
  • 将相关结果输出——printUnivList()方法
    1)getHTMLText()方法实现
def getHTMLText(url):try:r=requests.get(url,timeout=30)#通过get函数获取url信息r.raise_for_status()#用于产生异常信息r.encoding=r.apparent_encoding#修改编码,apparent_encoding一般为utf-8return r.text#成功则返回该链接的网页信息except:return ""#否则为异常信息,返回空串

2)fillUnivList()方法实现

#从网页信息中提取想要的信息并存入列表ulist中
def fillUnivList(ulist,html):soup=BeautifulSoup(html,"html.parser")#通过BeautifulSoup函数对页面进行调整,使得格式更加方便看,采用html的解析器#以下函数需要观察网页源代码进行写,从下图可以看出:一个<tr></tr>包含了一个大学的所有信息,每个<td></td>又包含了一个大学不同方面#的属性值,排名值,评分值等。tr的上一个属性是tbody,通过tbody的孩子节点找遍历所有的tr,在tr标签中找到td标签的信息,并将第1、2、4对应于tds数组中第0、1、3列的信息存贮进ulist中for tr in soup.find('tbody').children:if isinstance(tr,bs4.element.Tag):#过滤掉bs4库定义的非标签信息的其他信息tds=tr('td')ulist.append([tds[0].string,tds[1].string,tds[3].string])


3)printUnivList()方法实现

#ulist表示打印数据的类型,在这里是列表类型,num表示打印多少行数据
#该方法的作用就是将保存在ulist列表里的num行数据打印输出
def printUnivList(ulist,num):tplt="{0:^10}\t{1:{3}^10}\t{2:^10}"#用tplt存放输出 格式的定义;其中^表示居中对齐,10表示按10个字符的长度输出。长度不够补空格,{3}表示使用format函数的第三个变量进行填充,即使用中文的空格进行填充。print(tplt.format("排名","学校名称","总分",chr(12288)))#Python使用.format函数进行格式化输出#chr(12288)表示按中文的习惯进行填充空格,为了输出对齐的约束for i in range(num):u=ulist[i]print(tplt.format(u[0],u[1],u[2],chr(12288)))print("Suc"+str(num))#打印成功输出一个标记Suc**22**

4)定义主函数——main()

def main():uinfo=[]#存放大学信息,数据结构为列表形式url='http://www.zuihaodaxue.com/zuihaodaxuepaiming2019.html'#存放爬虫网页链接html=getHTMLText(url)#获取该网页内容fillUnivList(uinfo,html)#分析该网页内容并存放uinfo列表中printUnivList(uinfo,20)#将列表中前20个信息打印出来main()#调用main函数,程序入口

写给自己:2019年3月20日,事情过去了三天的时间,我的内心很平静。还是希望一切都是平平淡淡的,最好什么都不要发生。

Python网络爬虫实例——“中国最好大学排名爬取”(嵩天:北理工大学)学习笔记相关推荐

  1. Python网络爬虫数据采集实战:Scrapy框架爬取QQ音乐存入MongoDB

    ​    通过前七章的学习,相信大家对整个爬虫有了一个比较全貌的了解 ,其中分别涉及四个案例:静态网页爬取.动态Ajax网页爬取.Selenium浏览器模拟爬取和Fillder今日头条app爬取,基本 ...

  2. Python网络爬虫实践(1):爬取网易云音乐播放量大于1000万的歌单

    Python网络爬虫实践(1) 一.需求分析 爬取网易云音乐播放量大于1000万的歌单. 二.实施步骤 1.安装selenium selenium是一个用于Web应用自动化程序测试的工具,测试直接运行 ...

  3. Python网络爬虫实践(2):爬取小说网站小说

    Python网络爬虫实践(2) 一.需求分析 爬取某小说网站的一部小说 二.步骤 目标数据 网站 页面 分析数据加载流程 分析目标数据所对应的url 下载数据 清洗,处理数据 数据持久化 重点:分析目 ...

  4. python网络爬虫之解析网页的正则表达式(爬取4k动漫图片)[三]

    目录 前言 一.正则表达式的学习 1.正则表达式的匹配工具 2.正则表达式的样式 3.正则表达式的案例 二.爬取网页图片 1.分析网页 2.获取数据 爬取妹子网的案例 后记 前言 hello,大家好 ...

  5. Python网络爬虫实战:世纪佳缘爬取近6万条小姐姐数据后发现惊天秘密

    翻着安静到死寂的聊天列表,我忽然惊醒,不行,我们不能这样下去,光羡慕别人有什么用,我们要行动起来,去找自己的幸福!!! 我也想"谈不分手的恋爱" !!!内牛满面!!! 注册登陆一气 ...

  6. (转)Python网络爬虫实战:世纪佳缘爬取近6万条数据

    又是一年双十一了,不知道从什么时候开始,双十一从"光棍节"变成了"双十一购物狂欢节",最后一个属于单身狗的节日也成功被攻陷,成为了情侣们送礼物秀恩爱的节日. 翻 ...

  7. Python网络爬虫(二):多线程爬取小说

    这里我们爬取的小说是网站:笔趣阁,其中一本小说:一念永恒. (一)准备阶段 1.网站URL:http://www.biqukan.com/1_1094/ 2.浏览器:搜狗 3.我们打开网址,找到搜狗浏 ...

  8. Python网络爬虫实例1:股票数据定向爬虫

    Python网络爬虫实例:股票数据定向爬虫 一.功能描述 目标:获取上交所和深交所所有股票的名称和交易信息 输出:保存到文件中 技术路线:requests-bs4-re 二.候选数据网站选择 候选网站 ...

  9. 【Python爬虫9】Python网络爬虫实例实战

    文章目录 2.1自动化登录Facebook 2.3自动化登录Linkedin 爬取Google真实的搜索表单 爬取依赖JavaScript的网站Facebook 爬取典型在线商店Gap 爬取拥有地图接 ...

最新文章

  1. Angualr设置自定义管道Pipe(类似Vue的过滤器filters)货币格式化(实现内置管道CurrencyPipe的功能)
  2. Sprint软银宣布计划2019年推出5G商用服务
  3. Teamtalk源码分析
  4. 常见DDoS技术方法和对应防御措施
  5. matlab 二值化图像反色,图像处理——灰度化、二值化、反色、饱和度、对比度...
  6. angular日期输入框html,html5 – Angular2:日期格式文本框ngModel不起作用
  7. 罗宾斯管理学13版pdf_上海外国语工商管理经验贴(上外工商管理学硕)
  8. linux使用读mysql脚本,【mysql学习】linux安装mysql,使用install脚本方式 (二)
  9. 实时下载速度的计算:
  10. 墙裂推荐!比Sci-Hub网站更好用的文献下载神器!解决所有文献下载烦恼
  11. Electron 打包时下载 xxx-electron-v1.6.8-arch-x64.zip 文件出错
  12. IMDB.COM排名算法(贝叶斯公式)和Reddit评论排行算法
  13. 卿来云老师以前课程主页
  14. 如何用python绘制灰度直方图_用python简单处理图片(5):图像直方图
  15. dpi和ppi换算_八一八那些px、pt、ppi、dpi、dp、sp之间的关系
  16. Chrome欲撼IE浏览器 Opera参战扩大中国投资
  17. 2021年登高架设考试技巧及登高架设考试试题
  18. html5 promise,从HTML5与PromiseA+规范来看事件循环
  19. 灰度图像的彩色复原方法 ——以人脸着色为例
  20. PTA(十二)计算阶乘和

热门文章

  1. 【XJTUSE计算机图形学】第一章 绪论
  2. vsphere5.0环境中win2000虚机无法安装vmtools解决办法。
  3. mysql用在核心业务_MySQL 企业案例:误删核心业务表
  4. 学计算机的做近视眼手术,我做了近视眼手术十天以后……
  5. 牛客网练习赛34-b题
  6. Android的增强版android.widget.ProgressBar,带数字的水平滚动条(支持长方形、平行四边形及椭圆角矩形)等
  7. Postgresql修正序列插件之pg_sequence_fixer
  8. 用CMA热带气旋最佳路径数据集计算南海台风PDI指数
  9. android studio : Invalid revision: 3.18.1-g262b901-dirty
  10. Snipaste专业截屏贴图 标注取色工具 一个比QQ截图好用一万倍的截图神器!