博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
自己设计大学排名-数据库实践
阅读量:5323 次
发布时间:2019-06-14

本文共 3984 字,大约阅读时间需要 13 分钟。

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 requestsimport pandas as pdimport numpy as npfrom bs4 import BeautifulSoupimport sqlite3allUniv=[]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 requests from bs4 import BeautifulSoup 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):     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

你可能感兴趣的文章
洛谷 P1508 Likecloud-吃、吃、吃
查看>>
Tile的更新
查看>>
在同一个页面设置两个选项卡菜单 滑动式导航
查看>>
Mybatis: 无效的列类型:1111错误
查看>>
DataGridView隔行显示不同的颜色
查看>>
封装数据库配置文件App配置文件
查看>>
python 执行shell命令
查看>>
Mybatis的mapper文件中$和#的区别
查看>>
Find the total area covered by two rectilinear rectangles in a 2D plane. 208MM
查看>>
C#学习笔记-观察者模式
查看>>
常用原生JS兼容性写法汇总
查看>>
微信公众号网页开发——阻止微信客户端内点击任何图片自动放大
查看>>
hadoop2.6.0实践:004 启动伪分布式hadoop的进程
查看>>
12 生成器和生成器表达式
查看>>
bzoj2424: [HAOI2010]订货
查看>>
go语言reflect实验
查看>>
再谈AutoResetEvent和ManualResetEvent 之详细解说
查看>>
sql server日期与时间函数
查看>>
leetcode Minimum Depth of Binary Tree python
查看>>
IOS开发--动画篇-->计时定时器
查看>>