自己设计大学排名-数据库实践

1.有关MongoDB库的学习报告

Python有很多库,现在我们来学习MongoDB库

(1)MongoDB的概念

MongoDB基本概念是文档、集合、数据库、如下表:


SQL术语/概念


MongoDB术语/概念


解释/说明


database


database


数据库


table


collection


数据库表/集合


row


document


数据记录行/文档


column


field


数据字段/域


index


index


索引


table joins


表连接,MongoDB不支持


primary key


primary key


主键,MongoDB自动将_id字段设置为主键

(2)MongoDB的数据类型

数据类型 描述
String 字符串。存储数据常用的数据类型。在 MongoDB 中,UTF-8 编码的字符串才是合法的。
Integer 整型数值。用于存储数值。根据你所采用的服务器,可分为 32 位或 64 位。
Boolean 布尔值。用于存储布尔值(真/假)。
Double 双精度浮点值。用于存储浮点值。
Min/Max keys 将一个值与 BSON(二进制的 JSON)元素的最低值和最高值相对比。
Array 用于将数组或列表或多个值存储为一个键。
Timestamp 时间戳。记录文档修改或添加的具体时间。
Object 用于内嵌文档。
Null 用于创建空值。
Symbol 符号。该数据类型基本上等同于字符串类型,但不同的是,它一般用于采用特殊符号类型的语言。
Date 日期时间。用 UNIX 时间格式来存储当前日期或时间。你可以指定自己的日期时间:创建 Date 对象,传入年月日信息。
Object ID 对象 ID。用于创建文档的 ID。
Binary Data 二进制数据。用于存储二进制数据。
Code 代码类型。用于在文档中存储 JavaScript 代码。
Regular expression 正则表达式类型。用于存储正则表达式。

(3)MongoDB的常用命令为


> show dbs    -- 查看数据库列表


> use admin   --创建admin数据库,如果存在admin数据库则使用admin数据库


> db   ---显示当前使用的数据库名称


> db.getName()  ---显示当前使用的数据库名称


> db.dropDatabase()  --删当前使用的数据库


> db.repairDatabase()  --修复当前数据库


> db.version()   --当前数据库版本


> db.getMongo()  --查看当前数据库的链接机器地址


> db.stats() 显示当前数据库状态,包含数据库名称,集合个数,当前数据库大小 ...


> db.getCollectionNames()   --查看数据库中有那些个集合(表)


> show collections    --查看数据库中有那些个集合(表)


> db.person.drop()  --删除当前集合(表)person

利用sqlite3库将2017年最好大学网最好大学排名为csv文,

考虑到爬取的数据太多,此次只爬取最好大学排名前100名

其代码如下:

import requests
import pandas as pd
import numpy as np
from bs4 import BeautifulSoup
import sqlite3
allUniv=[]
def getHTMLText(url):
    try:
        r=requests.get(url,timeout=30)
        r.raise_for_status()
        r.encoding = ‘utf-8‘
        return r.text
    except:
        return ""
def fillUnivList(soup):
    data = soup.find_all(‘tr‘)
    for tr in data:
        ltd = tr.find_all(‘td‘)
        if len(ltd)==0:
            continue
        singleUniv = []
        for td in ltd:
            singleUniv.append(td.string)
        allUniv.append(singleUniv)
def printUnivList(num):
    with open(r‘C:\Users\Administrator\Desktop\大学排名.csv‘,‘w‘) as f:
        f.write("{1:^2}{2:{0}^10}{3:{0}^6}{4:{0}^4}{5:{0}^10}\n".format((chr(12288)),"排名","学校名称","省市","总分","科研规模"))
        for i in range(num):
            u=allUniv[i]
            f.write("{1:^2}{2:{0}^10}{3:{0}^6}{4:{0}^8.1f}{5:{0}^10}\n".format((chr(12288)),i+1,u[1],u[2],eval(u[3]),u[6]))
        f.close()
    if 1:
        print("successful")
    else:
        print("fail")

def main(num):
    url=‘http://www.zuihaodaxue.cn/zuihaodaxuepaiming2017.html‘
    html = getHTMLText(url)
    soup = BeautifulSoup(html,"html.parser")
    fillUnivList(soup)
    printUnivList(num)

main(100)

爬取最好大学网2017中国最好大学前100名的结果显示如下:

由于篇幅的问题就只显示前32名大学的排名情况.....................................

查询广东技术师范大学2017年最好大学排名以及科研规模数。

代码为:

import requestsfrom bs4 import BeautifulSoupallUniv=[]def getHTMLText(url):    try:        r=requests.get(url,timeout=30)        r.raise_for_status()        r.encoding = ‘utf-8‘        return r.text    except:        return ""def fillUnivList(soup):    data = soup.find_all(‘tr‘)    for tr in data:        ltd = tr.find_all(‘td‘)        if len(ltd)==0:            continue        singleUniv = []        for td in ltd:            singleUniv.append(td.string)        allUniv.append(singleUniv)def printUnivList(num):    a="广东"    print("{1:^2}{2:{0}^10}{3:{0}^6}{4:{0}^4}{5:{0}^10}".format(chr(12288),"排名","学校名称","省市","总分","科研规模"))    for i in range(num):        u=allUniv[i]        #print(u[1])        if a in u:            print("{1:^2}{2:{0}^10}{3:{0}^6}{4:{0}^8.1f}{5:{0}^10}".format(chr(12288),i+1,u[1],u[2],eval(u[3]),u[6]))def main():    url=‘http://www.zuihaodaxue.cn/zuihaodaxuepaiming2017.html‘    html = getHTMLText(url)    soup = BeautifulSoup(html,"html.parser")    fillUnivList(soup)    num=len(allUniv)    printUnivList(num)main()

由于广东技术师范学院是在2019年改名为广东技术师范大学,上面代码的查询为“广东技术师范学院”

其显示为

查询广东省大学在2017最好大学网的排名情况

在上面查询“”广东技术师范学院”的代码改为“广东”将上面爬取的改为其“成果转化”

结果显示如下:

此次学习到此结束!!!期待下回分享...................................

原文地址:https://www.cnblogs.com/psl1234/p/10926654.html

时间: 2024-10-27 12:30:10

自己设计大学排名-数据库实践的相关文章

我的“第一次”,就这样没了:DDD(领域驱动设计)理论结合实践

写在前面 插一句:本人超爱落网-<平凡的世界>这一期,分享给大家. 阅读目录: 关于DDD 前期分析 框架搭建 代码实现 开源-发布 后记 第一次听你,清风吹送,田野短笛:第一次看你,半弯新湖,鱼跃翠堤:第一次念你,燕飞巢冷,释怀记忆:第一次梦你,云翔海岛,轮渡迤逦:第一次认你,怨江别续,草桥知己:第一次怕你,命悬一线,遗憾禁忌:第一次悟你,千年菩提,生死一起. 人生有很多的第一次:小时候第一次牙牙学语.第一次学蹒跚学步...长大后第一次上课.第一次逃课.第一次骑自行车.第一次懂事.第一次和喜

【转】Flume(NG)架构设计要点及配置实践

Flume(NG)架构设计要点及配置实践 Flume NG是一个分布式.可靠.可用的系统,它能够将不同数据源的海量日志数据进行高效收集.聚合.移动,最后存储到一个中心化数据存储系统中.由原来的Flume OG到现在的Flume NG,进行了架构重构,并且现在NG版本完全不兼容原来的OG版本.经过架构重构后,Flume NG更像是一个轻量的小工具,非常简单,容易适应各种方式日志收集,并支持failover和负载均衡. 架构设计要点 Flume的架构主要有一下几个核心概念: Event:一个数据单元

领域驱动设计之单元测试最佳实践(二)

领域驱动设计之单元测试最佳实践(一) 介绍完了DDD案例,我们终于可以进入主题了,本方案的测试代码基于Xunit编写,断言组件采用了FluentAssertions,类似的组件还有Shouldly.另外本案例使用了Code Contracts for .NET,如果不安装此插件,可能有个别测试不能正确Pass. 为了实现目标中的第二点:"尽量不Mock,包括数据库读取部分”,我尝试过3种方案: 1.测试代码连接真实数据库,只需要将测试数据库配置到测试项目中的web.config中,即可达到这一目

领域驱动设计之单元测试最佳实践(一)

领域驱动设计之单元测试最佳实践(二) 一直以来,我试图找到一种有效的单元测试模式,使得“单元测试”真正能够在团队中流行起来,让单元测试不再是走过场,而是让单元测试切切实实成为提高代码质量的途径. 本文将描述一种以EF Code First模式实现的领域驱动项目实施单元测试的方案. 在描述这一方案之前,让我们看看这一最佳实践源于何种考虑和最终实现的目标: 1.以MVC项目为例,如果将单元测试的重心放在如何测试一个Controller或Action将收效甚微,原因有二: 从原则上讲Controlle

(参考)爬虫5-爬取中国大学排名情况

最好大学网 2018大学排名 功能描述: 输入:大学排名url链接 输出:大学排名信息的屏幕输出(排名,大学名称,总分) 技术路线:requests库和bs4库 定向爬虫:仅对输入的URL进行爬取,不扩展爬取 步骤: 1.输入url网址,查看源代码,发现信息都在HTML文件中 2.打开http://www.zuihaodaxue.cn/robots.txt,发现:not found,说明没有对爬取进行robots协议限制,可以进行爬取 3.程序的结构设计: 步骤1,从网络上获取大学排名网页内容,

数据库实践

一.SQLite3 数据库 SQLite3 可使用 sqlite3 模块与 Python 进行集成,一般 python 2.5 以上版本默认自带了sqlite3模块,因此不需要用户另外下载. 在 学习基本语法之前先来了解一下数据库是使用流程吧 ↓↓↓ 所以,首先要创建一个数据库的连接对象,即connection对象,语法如下: sqlite3.connect(database [,timeout,其他可选参数]) function: 此API打开与SQLite数据库文件的连接.如果成功打开数据库

基于SCRUM方法实践的西油计科党建设计与实现-个人实践流程清单

基于SCRUM方法实践的西油计科党建设计与实现 个人实践流程清单 一.Alpha版本冲刺个人在SCRUM团队任务清单: 时间 我这个三天做了什么 实际解决燃尽图项目数量 我遇到了什么问题 我下一个三天要做什么 预计下三天完成燃尽图项目数量 2019.10.9 将大家在国庆完成的组织管理.党员管理小程序前端代码与自己本地微擎小程序后带代码整合,并做单元测试,搭建本地微擎后台.认证个人小程序号.购买认证域名.域名解析绑定服务器 8 SSL证书一直审核出现问题.整合前端组织管理的小程序代码一直显示一直

Python爬虫——定向爬取“中国大学排名网”

内容整理自中国大学MOOC——北京理工大学-蒿天-Python网络爬虫与信息提取 相关实战章节 我们预爬取的url如下 http://www.zuihaodaxue.cn/zuihaodaxuepaiming2019.html 网页节选 在浏览器中读取网页源代码 可以 发现表格数据信息是直接写入HTML页面信息中,所以我们可以直接采取定向爬虫操作. 我们的整体设计思路如下: 1.从网络上获取大学排名网络内容 2.提取网页内容中信息到合适的数据结构 3.利用数据结构展示并输出结果 仔细观察可以发现

3分钟内快速部署MySQL5.6.35数据库实践

3分钟内快速部署MySQL5.6.35数据库实践 1.下载软件 wget -q http://mirrors.sohu.com/mysql/MySQL-5.6/mysql-5.6.35-linux-glibc2.5-x86_64.tar.gz 2.解压移动 tar xf mysql-5.6.35-linux-glibc2.5-x86_64.tar.gz  mkdir -p /application mv mysql-5.6.35-linux-glibc2.5-x86_64 /applicatio