#!/usr/bin/env python3
#-*- coding:utf-8 -*-
############################
#File Name: zuihaodaxuepaiming.py
#Author: frank
#Mail: frank0903@aliyun.com
#Created Time:2018-05-15 21:45:55
############################ import requests
from bs4 import BeautifulSoup #1. 获取html页面的内容
def getHTMLText(url):
try:
r = requests.get(url)
r.raise_for_status()
#r.encoding = r.apparent_encoding
r.encoding = 'utf-8'
return r.text except:
print("爬取异常")
return "" #2. 从html页面内容中爬取大学排名信息, (排名,学校名称,总分)
def getUnivInfo(uLst, html):
soup = BeautifulSoup(html, "lxml")
#获取排名中的大学的数量
print(len(soup.tbody.find_all("tr", recursive=False)))
#列出tbody的子节点
#for tag in soup.tbody.find_all('tr', recursive=False):
# #print("name:{},type:{}".format(tag.name, type(tag)))
# print(tag.td.string)
for tr in soup.tbody.find_all('tr', recursive=False,limit=1):
tds = tr('td')
#print(tr.prettify())
#print(tds)
#print(tds[0].string,tds[1].string, tds[3].string)
uLst.append([tds[0].string,tds[1].string, tds[3].string]) #3. 显示排名信息
#def printUnivInfo(uLst, num):
# print("{0:^10}\t{1:{3}^10}\t{2:^10}".format("排名","学校名称","总分",chr(12288)))
# for uni in uLst[0:num]:
# print("{0:^10}\t{1:{3}^10}\t{2:^10}".format(uni[0],uni[1],uni[2],chr(12288))) def printUnivInfo(uLst, num):
ptstr = "{0:^10}\t{1:{3}^10}\t{2:^10}"
print(ptstr.format("排名","学校名称","总分",chr(12288)))
for uni in uLst[0:num]:
print(ptstr.format(uni[0],uni[1],uni[2],chr(12288))) #中文字符的空格填充 chr(12288) def main():
url = "http://www.zuihaodaxue.cn/zuihaodaxuepaiming2016.html"
uLst = []
html = getHTMLText(url)
#print(html)
print("getHTMLText")
getUnivInfo(uLst, html)
print("getUnivInfo")
printUnivInfo(uLst, 10) main()

该实例主要是针对 requests 和 BeautifulSoup的应用。

最新文章

  1. SqlServer之数据库三大范式
  2. lnmp安装
  3. 小身材大用途,用PrimusUI驾驭你的页面
  4. Spring的xml文件配置方式实现AOP
  5. Oracle Concept
  6. python数字图像处理(11):图像自动阈值分割
  7. linux 磁盘管理以及维护
  8. Centos 7配置ntp时间同步
  9. linux资源监控命令详解
  10. 在C#中关于excel的导入和导出操作
  11. sublimeText3中 less2css error: `lessc` is not available的解决办法
  12. oracle 存储过程返回结果集 (转载)
  13. js数组与对象的一些区别。
  14. 大数据系列修炼-Scala课程07
  15. 转 如何高效使用和管理Bitmap--图片缓存管理模块的设计与实现
  16. JavaSE教程-03深入探究原码,反码,补码-扩展
  17. v9更新栏目缓存提示PHP has encountered a Stack overflow解决方法
  18. [转载] java多线程学习-java.util.concurrent详解(四) BlockingQueue
  19. 什么是Dubbo
  20. 51单片机定时器实现LED闪烁

热门文章

  1. CDN混战何去何从,史上最全分析
  2. Nginx部署前端代码实现前后端分离
  3. Solr6.6 IK 中文分词的配置和使用
  4. openwrt web server
  5. [Webpack] Detect Unused Code with Webpack and unused-files-webpack-plugin
  6. 倍福TwinCAT(贝福Beckhoff)常见问题(FAQ)-有时候项目会无法编译,重新生成就自动卡死或者自动退出怎么办
  7. iOS/iphone开发如何为苹果开发者帐号APPID续费
  8. axios [æk'si:əʊs] 及 axios 请求配置
  9. Android NDK学习记录(一)
  10. .gnet标准