python案例-爬取大学排名

一个好玩的爬虫

明天就要考试了,就是不想复习,就想去写代码,学习编程!2018,第一炮。

技术路线:request-bs4

程序结构:

1.从网上获取大学排名 :getHTMLText()

2.提取网页内容到合适的数据结构中:fillUnivList()

3.利用合适的数据结构展示爬取的结果 :printUnivList()

源程序代码:

import requests #导入request库

import bs4 #导入bs4库,包括BeautifulSoup

#输入爬取的网址,输出爬取的内容

def getHTMLText(url):

try:

r=requests.get(url,timeout=30) #爬取的网址以及,反应时间

r.raise_for_status() #判断爬取是否异常

r.encoding=r.apparent_encoding #更改编码

return r.text #返回读取的内容

#异常的处理

except:

return ""

#将页面放到一个list列表中,

def fillUnivList(ulist,html):

#使用beautifulSoup对爬取的内容进行html解码

soup=BeautifulSoup(html,"html.parser")

#遍历tbody标签的孩子的tr标签

for tr in soup.find('tbody').children:

#对获取的tr标签进行判断是不是标签

if isinstance(tr,bs4.element.Tag):

tds=tr('td') #获取td标签,列表类型

#向定义的列表增加信息

ulist.append([tds[0].string,tds[1].string,tds[3].string])

#学校信息的打印,需要格式化输出

def printUnivList(ulist,num):

#表示填充时使用第三个变量,中文空格 chr(12288)

tplt="\t^10}\t"

#首先打印表头,居中对齐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)))

#调用的主函数

def main():

uinfo=[] #定义一个列表

url='http://www.zuihaodaxue.com/zuihaodaxuepaiming2016.html' #大学排名的链接

html=getHTMLText(url) #调用函数,爬取网页

fillUnivList(uinfo,html) #将爬取的网页放到uinfo中

printUnivList(uinfo,20) #打印前20个大学排名信息

#程序入口

main()

网页结果

01

爬取显示结果

2

这里爬取的网页是静态文字内容,不适用JavaScript动态生成的,2017年的大学排名在本程序就不可以使用。这里还需要注意的是对于字符串的格式化输出,使用chr(12288),代表的是一个中文的空格键。作者小白,请多多指导!

本文来自企鹅号 - IT佬的成长之路媒体

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏听雨堂

用Layer.search快速查询图元

    Mapx中查找图元,用Layer.search来完成;     Layer.search支持用比较表达式来进行查询;但是,往往会报告变量不存在。原因在于...

20710
来自专栏跟着阿笨一起玩NET

运行时自定义PropertyGrid显示属性项目

在PropertyGrid所显示的属性内容包括属性分类(Category)及组件属性,

1302
来自专栏iOSer成长记录

OpenGL ES(二) 三角形

1383
来自专栏林德熙的博客

win10 uwp 使用 Geometry resources 在 xaml

经常会遇到在 xaml 使用矢量图,对于 svg 的矢量图,一般都可以拿出来写在 Path 的 Data ,所以可以写为资源,但是写出来的是字符串,如何绑定 G...

622
来自专栏前端小叙

js与ios桥接使用WebViewJavascriptBridge简单理解

https://github.com/marcuswestin/WebViewJavascriptBridge function setupWebViewJav...

3295
来自专栏Ryan Miao

Spring resource bundle多语言,单引号format异常

Spring resource bundle多语言,单引号format异常 source code 前言 十一假期被通知出现大bug,然后发现是多语言翻译问题。...

3718
来自专栏抠抠空间

SQLALchemy的其他常用操作

1435
来自专栏Google Dart

AngularDart Material Design 滑块 顶

可以通过使用鼠标拖动滑块或使用键盘来控制滑块。 在LTR中,向左/向下箭头键将值减1,向上/向右键增加1,向上翻页增加10%(向上舍入),向下翻页减少10%(向...

1352
来自专栏SeanCheney的专栏

《利用Python进行数据分析·第2版》第6章 数据加载、存储与文件格式6.1 读写文本格式的数据6.2 二进制数据格式6.3 Web APIs交互6.4 数据库交互6.5 总结

访问数据是使用本书所介绍的这些工具的第一步。我会着重介绍pandas的数据输入与输出,虽然别的库中也有不少以此为目的的工具。 输入输出通常可以划分为几个大类:读...

5436
来自专栏软件开发

JavaSE学习总结(二)——Java语言基础

一、Java程序预览 Java的语法与C非常类似,这里先使用几个非常简单的程序以点带面来区分C语Java的区分再细讲每个知识点。该文仅针对有编程基础的朋友参考。...

2318

扫码关注云+社区