抓取内容:

从最好大学网上抓取中国前10的大学排名、大学名称、总分,并数据格式左对齐。 http://www.zuihaodaxue.cn/zuihaodaxuepaiming2017.html

首先,看下网站的Robots协议,没有找到相关协议,可以抓取。 http://www.zuihaodaxue.cn/robots.txt

接下来开始整理思路:

  • 获取网页信息
  • 填充列表数据
  • 输出列表数据,并进行格式化
  • 输出结果

完整代码:

 import requests
 from bs4 import BeautifulSoup
 import bs4

 # 获取网页信息的通用框架
 def 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, 'lxml')
     for tr in soup.find('tbody').children:
         # 检查网页代码可以发现数据都储存在tboyd标签中,这里需要对tbody的儿子节点进行遍历
         if isinstance(tr, bs4.element.Tag):
             # 检测标签类型,如果不是bs4库支持的Tag类型,就过滤掉,这里需要先导入bs4库
             tds = tr('td')
             # 解析出tr标签中的td标签后,将其储存在列表tds中
             ulist.append([tds[0].string, tds[1].string, tds[3].string])
             # 我们需要的是排名、学校名称和总分

 # 格式化后,输出列表数据
 def printUnivList(ulist, num):
     tplt = '{:<10}\t{:<10}\t{:<10}'
     # 定义输出模板为变量tplt,\t为横向制表符,<为左对齐,10为每列的宽度
     print(tplt.format('排名','学校名称','总分'))
     # format()方法做格式化输出
     for i in range(num):
         u = ulist[i]
         print(tplt.format(u[0],u[1],u[2]))

 def main():
     uinfo = []
     url = 'http://www.zuihaodaxue.cn/zuihaodaxuepaiming2017.html'
     html = getHtmlText(url)
     fillUnivList(uinfo, html)
     printUnivList(uinfo, 10)
     # 选取前10所学校信息
 main()

运行结果:

操作环境:Mac,Python 3.6,PyCharm 2016.2

参考资料:中国大学MOOC课程《Python网络爬虫与信息提取》

-----   End   -----

更多精彩内容关注我公众号:杜王丹

作者:杜王丹,互联网产品经理

Python爬虫实战:2017中国最好大学排名的更多相关文章

  1. python爬虫抓取中国最好大学排名1 清华大学 北京 94.0 100.0 97.70% 清华大学 2 北京大学

    import requests from bs4 import BeautifulSoup import bs4.element r=requests.get("http://www.zui ...

  2. Python爬虫实战七之计算大学本学期绩点

    大家好,本次为大家带来的项目是计算大学本学期绩点.首先说明的是,博主来自山东大学,有属于个人的学生成绩管理系统,需要学号密码才可以登录,不过可能广大读者没有这个学号密码,不能实际进行操作,所以最主要的 ...

  3. 【图文详解】python爬虫实战——5分钟做个图片自动下载器

    python爬虫实战——图片自动下载器 之前介绍了那么多基本知识[Python爬虫]入门知识,(没看的先去看!!)大家也估计手痒了.想要实际做个小东西来看看,毕竟: talk is cheap sho ...

  4. Python爬虫实战(4):豆瓣小组话题数据采集—动态网页

    1, 引言 注释:上一篇<Python爬虫实战(3):安居客房产经纪人信息采集>,访问的网页是静态网页,有朋友模仿那个实战来采集动态加载豆瓣小组的网页,结果不成功.本篇是针对动态网页的数据 ...

  5. Python爬虫实战(2):爬取京东商品列表

    1,引言 在上一篇<Python爬虫实战:爬取Drupal论坛帖子列表>,爬取了一个用Drupal做的论坛,是静态页面,抓取比较容易,即使直接解析html源文件都可以抓取到需要的内容.相反 ...

  6. Python爬虫实战四之抓取淘宝MM照片

    原文:Python爬虫实战四之抓取淘宝MM照片其实还有好多,大家可以看 Python爬虫学习系列教程 福利啊福利,本次为大家带来的项目是抓取淘宝MM照片并保存起来,大家有没有很激动呢? 本篇目标 1. ...

  7. Python爬虫实战---抓取图书馆借阅信息

    Python爬虫实战---抓取图书馆借阅信息 原创作品,引用请表明出处:Python爬虫实战---抓取图书馆借阅信息 前段时间在图书馆借了很多书,借得多了就容易忘记每本书的应还日期,老是担心自己会违约 ...

  8. Python爬虫实战八之利用Selenium抓取淘宝匿名旺旺

    更新 其实本文的初衷是为了获取淘宝的非匿名旺旺,在淘宝详情页的最下方有相关评论,含有非匿名旺旺号,快一年了淘宝都没有修复这个. 可就在今天,淘宝把所有的账号设置成了匿名显示,SO,获取非匿名旺旺号已经 ...

  9. Python爬虫实战六之抓取爱问知识人问题并保存至数据库

    大家好,本次为大家带来的是抓取爱问知识人的问题并将问题和答案保存到数据库的方法,涉及的内容包括: Urllib的用法及异常处理 Beautiful Soup的简单应用 MySQLdb的基础用法 正则表 ...

随机推荐

  1. linux(centos 7) 下安装nodejs

    1,到node官网下载linux版本,有32和64位版本 2,将文件上传到linux下 3,使用tar -xvf node-v8.9.3-linux-x64.tar.xz 进行解压 4,建立软连接,变 ...

  2. WorldWind源码剖析系列:挂件类Widgets

    WorldWindow用户定制控件类中所包含的的挂件类Widgets控件主要有如下图所示的派生类.它们的类图如下所示. 鉴于挂件类Widgets及其派生类,相对简单,基本上都是些利用DirectX3D ...

  3. css 字体、文本、padding的样式

    一.字体的样式: 1)字体倾斜:font-style:italic 2)字体大小:font-size 一般为偶数. 3)行高:line-height   当行高为奇数的时候,是文字上面比文字下面的少一 ...

  4. CAN总线典型特征

    CAN总线典型特征 2016-04-12 20:36:54来源: eefocus 关键字:CAN总线  典型特征   收藏 评论(0) 分享到 微博 QQ 微信 LinkedIn CAN总线有如下基本 ...

  5. 极客互联网电视不是噱头,用户体验成创维G7200核心竞争力

        IT产业的迅猛发展带动了智能设备的崛起与繁荣,除已经高度普及的智能手机之外.智能电视.智能可穿戴设备等一大批新兴产品更是让消费者充分感受到了智能科技为生活所带来的变化.以智能电视为例,除了乐视 ...

  6. How develop BigData Project in Visual Studio

  7. c# WPF 获取网络图片,验证码

    c# WPF 获取网络图片,验证码 public static BitmapImage getValidCodeBitmap() { string url = "http://my.baaa ...

  8. 20155204《网络对抗》Exp9 Web安全基础实践

    20155204<网络对抗>Exp9 Web安全基础实践 一.基础问题回答 SQL注入攻击原理,如何防御? 原理: SQL注入即是指web应用程序对用户输入数据的合法性没有判断,攻击者可以 ...

  9. 20155217《网络对抗》Exp03 免杀原理与实践

    20155217<网络对抗>Exp03 免杀原理与实践 实践内容 正确使用msf编码器,msfvenom生成如jar之类的其他文件,veil-evasion,自己利用shellcode编程 ...

  10. 手撸orm框架

    一 前言 1 我在实例化一个user对象的时候,可以user=User(name='lqz',password='123') 2 也可以 user=User() user['name']='lqz' ...