Python爬虫与数据图表的实现

要求:

1. 参考教材实例20,编写Python爬虫程序,获取江西省所有高校的大学排名数据记录,并打印输出。

2. 使用numpy和matplotlib等库分析数据,并绘制南昌大学、华东交通大学、江西理工大学三个高校的总分排名、生源质量(新生高考成绩得分)、培养结果(毕业生就业率)、顶尖成果(高被引论文·篇)等四个指标构成的多指标柱形图。

3. 对江西各高校的顶尖成果(高被引论文数量)进行分析,使用matplotlib绘制各高校顶尖成果数构成的饼状图,并突出江西理工大学所在的饼状块。

实例代码:

import requests
from bs4 import BeautifulSoup
import numpy as np
import matplotlib.pyplot as plt

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)
    return len(allUniv)

def printUnivList(num):
    print("{0:^4}\t{1:^20}\t{2:^5}\t{3:^8}\t{4:^8}\t{5:^8}\t{6:^8}".format("排名", "学校名称", "省市", "总分", "生源质量", "培养结果", "顶尖成果"))
    for i in range(num):
        u = allUniv[i]
        if u[2] == "江西":
            print("{0:^4}\t{1:^20}\t{2:^5}\t{3:^8}\t{4:^8}\t{5:^8}\t{6:^8}".format(u[0], u[1], u[2], u[3], str(u[4]), str(u[5]), str(u[9])))

def drawBarChart(num):
    jxlg = []
    ncdx = []
    hdjd = []
    for i in range(num):
        u = allUniv[i]
        if u[1] == "江西理工大学":
            jxlg.append(float(u[3]))
            jxlg.append(float(u[4]))
            jxlg.append(float(str(u[5]).replace(‘%‘, ‘‘)))
            jxlg.append(float(u[9]))
        if u[1] == "南昌大学":
            ncdx.append(float(u[3]))
            ncdx.append(float(u[4]))
            ncdx.append(float(str(u[5]).replace(‘%‘, ‘‘)))
            ncdx.append(float(u[9]))
        if u[1] == "华东交通大学":
            hdjd.append(float(u[3]))
            hdjd.append(float(u[4]))
            hdjd.append(float(str(u[5]).replace(‘%‘, ‘‘)))
            hdjd.append(float(u[9]))
    name_list = [‘总分‘, ‘生源质量‘, ‘培养结果‘, "顶尖成果"]
    x = list(range(len(name_list)))
    total_width, n = 0.8, 4
    width = total_width / n
    fig, ax = plt.subplots()
    plt.rcParams[‘font.sans-serif‘] = ‘SimHei‘
    plt.bar(x, jxlg, width=width, label=‘江西理工大学‘, tick_label=name_list, fc=‘r‘)
    for i in range(len(x)):
        x[i] = x[i] + width
    plt.bar(x, ncdx, width=width, label=‘南昌大学‘, fc=‘y‘)
    for i in range(len(x)):
        x[i] = x[i] + width
    plt.bar(x, hdjd, width=width, label=‘华东交通大学‘, fc=‘b‘)
    # plt.xticks(np.arange(len(name_list)))
    plt.legend()
    plt.show()

def drawBar(num):
    djcg = []
    name = []
    explode = []
    for i in range(num):
        u = allUniv[i]
        if u[2] == "江西":
            djcg.append(u[9])
            name.append(u[1])
            if u[1] == "江西理工大学":
                explode.append(0.5)
            else:
                explode.append(0)
    plt.rcParams[‘font.sans-serif‘] = ‘SimHei‘
    fig1, ax1 = plt.subplots()
    ax1.pie(djcg, explode=explode, labels=name, autopct=‘%1.1f%%‘,
            shadow=True, startangle=90)
    ax1.axis(‘equal‘)
    plt.legend()
    plt.show()

def main():
    url = "http://www.zuihaodaxue.com/zuihaodaxuepaiming2018.html"
    html = getHTMLText(url)
    soup = BeautifulSoup(html, "html.parser")
    num = fillUnivList(soup)
    printUnivList(num)
    drawBarChart(num)
    drawBar(num)

if __name__ == ‘__main__‘:
    main()

江西省高校排名结果如下:

三校部分数据对比如下:

江西各高校的顶尖成果(高被引论文数量)对比分析如下:

原文地址:https://www.cnblogs.com/shixinzei/p/10180733.html

时间: 2024-10-10 11:05:12

Python爬虫与数据图表的实现的相关文章

Python爬虫 股票数据爬取

前一篇提到了与股票数据相关的可能几种数据情况,本篇接着上篇,介绍一下多个网页的数据爬取.目标抓取平安银行(000001)从1989年~2017年的全部财务数据. 数据源分析 地址分析 http://money.finance.sina.com.cn/corp/go.php/vFD_FinancialGuideLine/stockid/000001/ctrl/2017/displaytype/4.phtml 在浏览器(PC上)中打开这个地址,就可以看到下图显示的财务数据.这个地址是一个通用格式:(

Python爬虫音频数据

一:前言 本次爬取的是喜马拉雅的热门栏目下全部电台的每个频道的信息和频道中的每个音频数据的各种信息,然后把爬取的数据保存到mongodb以备后续使用.这次数据量在70万左右.音频数据包括音频下载地址,频道信息,简介等等,非常多.昨天进行了人生中第一次面试,对方是一家人工智能大数据公司,我准备在这大二的暑假去实习,他们就要求有爬取过音频数据,所以我就来分析一下喜马拉雅的音频数据爬下来.目前我还在等待三面中,或者是通知最终面试消息. (因为能得到一定肯定,不管成功与否都很开心) 二:运行环境 IDE

Python爬虫爬数据写入到EXCEL中

Python抓数据写到EXCEL中.以前都是写到txt中然后再导入到excel.现在直接写到excel中. #coding=utf-8 import xlwt import requests from bs4 import BeautifulSoup import sys reload(sys)   sys.setdefaultencoding('utf8')  #打开excel文件 data=xlwt.Workbook() #获取其中的一个sheet table=data.add_sheet(

python爬虫13--Ajax数据爬取

1. Ajax介绍 Ajax,Asynchronous JavaScript and XML,即异步的JavaScript和XML.它不是编程语言,而是利用JavaScript在保证页面不被刷新.页面链接不改变的情况下,与服务器交换数据并更新部分网页的技术. 2. Ajax基本原理 发送Ajax请求到网页更新的过程可以分为3步: 发送请求 解析内容 渲染页面 //创建XMLHttpRequest对象 var xmlhttp; if(window.XMLHttpRequest){ xmlhttp=

Python爬虫爬数据写入到文件

#coding=utf-8 import requests from bs4 import BeautifulSoup import sys reload(sys)   sys.setdefaultencoding('utf8')  r=requests.get('http://html-color-codes.info/color-names/') html=r.text #print html soup=BeautifulSoup(html,'html.parser') trs=soup.f

Python爬虫:数据解析 之 xpath

资料: W3C标准:https://www.w3.org/TR/xpath/all/ W3School:https://www.w3school.com.cn/xpath/index.asp 菜鸟教程:https://www.runoob.com/xpath/xpath-tutorial.html xpath教程:http://www.zvon.org/xxl/XPathTutorial/General_chi/examples.html XPATH在线测试:http://www.bejson.

python 爬虫必知必会

#python爬虫 #新闻数据 #机器学习:股票数据获取及分析 #网络搜索引擎的一个部件 #Http协议 #正则表达式 #多线程,分布式 #http报文展示 #Http 应答报文介绍 #1.应答码 #2xx:成功200:ok,206 #3xx: 重定向 #4xx: 客户端错误 400 Bad Request,404 Not Found #5xx: 服务端错误 500 Internal Server Error, 501 Not Implemented #2.Server:应答服务器 #3.Con

Python爬虫:用BeautifulSoup进行NBA数据爬取

爬虫主要就是要过滤掉网页中无用的信息,抓取网页中有用的信息 一般的爬虫架构为: 在python爬虫之前先要对网页的结构知识有一定的了解,如网页的标签,网页的语言等知识,推荐去W3School: W3school链接进行了解 在进行爬虫之前还要有一些工具: 1.首先Python 的开发环境:这里我选择了python2.7,开发的IDE为了安装调试方便选择了用VS2013上的python插件,在VS上进行开发(python程序的调试与c的调试差不多较为熟悉): 2.网页源代码的查看工具:虽然每一个浏

python爬虫----(6. scrapy框架,抓取亚马逊数据)

利用xpath()分析抓取数据还是比较简单的,只是网址的跳转和递归等比较麻烦.耽误了好久,还是豆瓣好呀,URL那么的规范.唉,亚马逊URL乱七八糟的.... 可能对url理解还不够. amazon ├── amazon │   ├── __init__.py │   ├── __init__.pyc │   ├── items.py │   ├── items.pyc │   ├── msic │   │   ├── __init__.py │   │   └── pad_urls.py │