python之中国大学爬虫
2024-08-26 20:17:41
#!/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的应用。
最新文章
- SqlServer之数据库三大范式
- lnmp安装
- 小身材大用途,用PrimusUI驾驭你的页面
- Spring的xml文件配置方式实现AOP
- Oracle Concept
- python数字图像处理(11):图像自动阈值分割
- linux 磁盘管理以及维护
- Centos 7配置ntp时间同步
- linux资源监控命令详解
- 在C#中关于excel的导入和导出操作
- sublimeText3中 less2css error: `lessc` is not available的解决办法
- oracle 存储过程返回结果集 (转载)
- js数组与对象的一些区别。
- 大数据系列修炼-Scala课程07
- 转 如何高效使用和管理Bitmap--图片缓存管理模块的设计与实现
- JavaSE教程-03深入探究原码,反码,补码-扩展
- v9更新栏目缓存提示PHP has encountered a Stack overflow解决方法
- [转载] java多线程学习-java.util.concurrent详解(四) BlockingQueue
- 什么是Dubbo
- 51单片机定时器实现LED闪烁
热门文章
- CDN混战何去何从,史上最全分析
- Nginx部署前端代码实现前后端分离
- Solr6.6 IK 中文分词的配置和使用
- openwrt web server
- [Webpack] Detect Unused Code with Webpack and unused-files-webpack-plugin
- 倍福TwinCAT(贝福Beckhoff)常见问题(FAQ)-有时候项目会无法编译,重新生成就自动卡死或者自动退出怎么办
- iOS/iphone开发如何为苹果开发者帐号APPID续费
- axios [æk'si:əʊs] 及 axios 请求配置
- Android NDK学习记录(一)
- .gnet标准