抓取内容:

从最好大学网上抓取中国前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. [转]System.DllNotFoundException: 无法加载 DLL“*.dll”: 内存位置访问无效。 (异常来自 HRESULT:0x800703E6)

    我在使用地税发票控件进行开票的测试的时候,在xp上测试时正常的,在别人的win7系统测试也是正常,但我在我本机确不正常.我本机装的是msdn版本win7系统,这个系统比较原装. 错误信息如下: -- ...

  2. WorldWind源码剖析系列:图层管理器按钮类LayerManagerButton和菜单条类MenuBar

    WorldWindow用户定制控件类中所包含的的可视化子控件主要有:图层管理器按钮类LayerManagerButton和菜单条类MenuBar.BmngLoader类中所包含的的可视化子控件主要有: ...

  3. 前端:background 设置

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  4. Flask 邮件发送

    欢迎关注小婷儿的博客: csdn:https://blog.csdn.net/u010986753 博客园:http://www.cnblogs.com/xxtalhr/ 有问题请在博客下留言或加QQ ...

  5. 支持-webkit-前缀的浏览器修改滚动条样式

    //血槽宽度 ::-webkit-scrollbar { width:8px; height:8px; } //拖动条 ::-webkit-scrollbar-thumb { background-c ...

  6. DQN(Deep Reiforcement Learning) 发展历程(五)

    目录 值函数的近似 DQN Nature DQN DDQN Prioritized Replay DQN Dueling DQN 参考 DQN发展历程(一) DQN发展历程(二) DQN发展历程(三) ...

  7. 在mvc视图中实现rdlc报表展示(补充)

    上篇: 在mvc视图中实现rdlc报表展示 在上一遍中,由于不知道如何在aspx.cs后台中实例化abp的IxxxAppService.cs的接口,我采取的方式是在视图页中把查询出的数据存储到aspx ...

  8. DOTNET Core 命令

    dotnet 命令目录: 1.dotnet-new 2.dotnet-restore 3.dotnet-build 4.dotnet-run 5.dotnet-test 6.dotnet-pack 7 ...

  9. 【css】文本超出行数以省略号显示

    //超出2行省略overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-box-orient:vertical;-webk ...

  10. jquery方法简单记录

      append() - 在被选元素的结尾插入内容 prepend() - 在被选元素的开头插入内容 after() - 在被选元素之后插入内容 before() - 在被选元素之前插入内容 firs ...