zoukankan      html  css  js  c++  java
  • 爬取中国近年大学排名


    #
    以软科中国最好大学排名为分析对象,基于requests库和bs4库编写爬虫程序,对2015年至2019年间的中国大学排名数据进行爬取: # (1)按照排名先后顺序输出不同年份的前10位大学信息,并要求对输出结果的排版进行优化; # (2)结合matplotlib库,对2015-2019年间前10位大学的排名信息进行可视化展示。 # (3附加)编写一个查询程序,根据从键盘输入的大学名称和年份,输出该大学相应的排名信息。如果所爬取的数据中不包含该大学或该年份信息,则输出相应的提示信息,并让用户选择重新输入还是结束查询 # -*- coding:utf-8 -*- import requests import bs4 from bs4 import BeautifulSoup import matplotlib.pyplot as plt import pandas as pd import csv # 获取静态网页 def getText(url): """获取网页HTML""" header = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.61 Safari/537.36'} # 设置头文件信息 try: r = requests.get(url, headers=header, timeout=10) r.raise_for_status() r.encoding = r.apparent_encoding return r.text except requests.HTTPError: # 超时提示 print("time out") # 获取静态网页上的静态数据 def getUniversList(html): """获取HTML中的数据信息""" list_u = [] soup = BeautifulSoup(html, "html.parser") for tr in soup.find('tbody').children: if isinstance(tr, bs4.element.Tag): tds = tr('td') list_u.append([tds[0].string, tds[1].string, tds[2].string, tds[3].string]) return list_u # 打印排名数据 def printUniverseList(list_universe, num): """打印测试""" print("{:^10} {:^6} {:^10} {:^10}".format("排名", "学校名称","省市", "总分")) for i in range(num): u = list_universe[i] if u[0]: print("{:^10} {:^6} {:^10} {:^10}".format(u[0], u[1], u[2], u[3])) else: print("{:^10} {:^6} {:^10} {:^10}".format(i+1, u[1], u[2], u[3])) def putIntoCsv(list_universe, num): # 写入数据库 for i in range(num): u = list_universe[i] # print(u) :['1 ', '清华大学', '北京', '94.1'] # 1. 打开csv文件,a+的命令保证可以追加写入,utf-8-sig的命令保证写入不会是乱码 f = open('date.csv', 'a+', encoding='utf-8-sig') # 2. 基于文件对象构建 csv写入对象,dialect='unix'保证不会有空行 csv_writer = csv.writer(f, dialect='unix') # 3. 构建列表头,第一次写入即可注释掉 # csv_writer.writerow(["排名","学校名称","省份","总分"]) # 4. 写入csv文件内容 csv_writer.writerow(u) # 5. 关闭文件 f.close() pass # 定义爬取主方法 def spiderHtml(url): list_universe = [] # 爬取网页内容 # print(url) text = getText(url) # print(text) # 获取排名数据 list_universe = getUniversList(text) # print(list_universe) # 打印排名,只需执行一次,截图后为了节省时间便注释掉了 # printUniverseList(list_universe,10) # 写入csv文件存储,只需写入一次 # putIntoCsv(list_universe,10) if __name__ == '__main__': urls = [ "http://www.zuihaodaxue.cn/zuihaodaxuepaiming2015_0.html", "http://www.zuihaodaxue.cn/zuihaodaxuepaiming2016.html", "http://www.zuihaodaxue.cn/zuihaodaxuepaiming2017.html", "http://www.zuihaodaxue.cn/zuihaodaxuepaiming2018.html", "http://www.zuihaodaxue.cn/zuihaodaxuepaiming2019.html"] year = 2015 for url in urls: print("%d年:" % (year)) spiderHtml(url) print("**********************************************************************") year = year + 1 if year > 2019: break print("爬取成功")
    以软科中国最好大学排名为分析对象,基于requests库和bs4库编写爬虫程序,对2015年至2019年间的中国大学排名数据进行爬取:
    (1)按照排名先后顺序输出不同年份的前10位大学信息,并要求对输出结果的排版进行优化;
    (2)结合matplotlib库,对2015-2019年间前10位大学的排名信息进行可视化展示。
    (3附加)编写一个查询程序,根据从键盘输入的大学名称和年份,输出该大学相应的排名信息。如果所爬取的数据中不包含该大学或该年份信息,则输出相应的提示信息,并让用户选择重新输入还是结束查询


    自己可以试试。
  • 相关阅读:
    Digital Video Stabilization and Rolling Shutter Correction using Gyroscope 论文笔记
    Distortion-Free Wide-Angle Portraits on Camera Phones 论文笔记
    Panorama Stitching on Mobile
    Natural Image Stitching with the Global Similarity Prior 论文笔记 (三)
    Natural Image Stitching with the Global Similarity Prior 论文笔记(二)
    Natural Image Stitching with the Global Similarity Prior 论文笔记(一)
    ADCensus Stereo Matching 笔记
    Efficient Large-Scale Stereo Matching论文解析
    Setting up caffe on Ubuntu
    Kubernetes配置Secret访问Harbor私有镜像仓库
  • 原文地址:https://www.cnblogs.com/msdog/p/13022345.html
Copyright © 2011-2022 走看看