zoukankan      html  css  js  c++  java
  • 自己设计大学排名-数据库实践

    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:UsersAdministratorDesktop大学排名.csv','w') as f:
            f.write("{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]
                f.write("{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]))
            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()
  • 相关阅读:
    rosbag 那些事
    rosbag record and play
    xsens melodic ros driver
    ros the public key is not available
    pyhton2与pyhton3切换
    期待已久的2013年度最佳 jQuery 插件揭晓
    MVC学习资料
    依赖注入框架Autofac的简单使用
    bootstrap
    https://nodejstools.codeplex.com
  • 原文地址:https://www.cnblogs.com/satoshi3104/p/12941887.html
Copyright © 2011-2022 走看看