是雷姆吗 2021-06-23 17:41 采纳率: 50%
浏览 89
已采纳

python关于request的爬虫和对爬取的数据简单处理

from os import lstat
import requests
from bs4 import BeautifulSoup
import pandas as pd
import numpy as np
import json
from matplotlib import colors, pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimHei']  # 用来正常显示中文标签 plt.reParams是一个配置表
plt.rcParams['axes.unicode_minus'] = False  # 用来正常显示负号
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):
    print("{1:^4}{2:{0}<15}{3:{0}^5}{4:{0}^8}{5:{0}<10}".format(
        chr(12288), "名次", "学校名称", "综合得分", "星级排名", "办学层次"))
    lst =[]
    for i in range(1,num+1):
        u = allUniv[i]
        lst.append(eval(u[2]))
        print("{1:^4}{2:{0}<15}{3:{0}^5}{4:{0}^8}{5:{0}<10}".format(
            chr(12288), u[0], u[1], u[2], u[3], u[4]))
    df=pd.DataFrame(allUniv)           #把数据放入csv文件
    df.to_csv('D:\\demo\\xsb.csv',index=False,sep=',')

def barpng():         #对前十名的学校的综合得分进行画图
    大学名称=range(10)
    综合得分=[100,98.78,82.14,81.98,81.43,81.34,80.49,80.44,80.41,80.38]
    plt.bar(大学名称,综合得分, label='分数',color = "green")
    plt.legend()
    plt.xticks([0,1,2,3,4,5,6,7,8,9],['北京大学','清华大学','复旦大学','浙江大学','南京大学','上海交通大学','华中科技大学','中国科学技术大学','中国人民大学','天津大学'])
    plt.xlabel("大学名称")
    plt.ylabel("综合得分")
    plt.title(u'中国高校前10星级统计图')
    for i in range(10):
        plt.text(i,综合得分[i]+0.1,"%s"%综合得分[i],va='center')
    plt.show()





def main():
    url = 'http://gaosan.com/gaokao/265440.html'
    html = getHTMLText(url)   #获取网页内容
    soup = BeautifulSoup(html, "html.parser")    #对数据分析
    fillUnivList(soup)    #对获取的网页进行数据分析
    printUnivList(100)    #在终端打印排名
    barpng()    #画柱形图

main()

如果我要只获取排名前一百的大学存入csv文件中,该怎么做

  • 写回答

1条回答 默认 最新

  • 碰碰虎 2021-06-23 20:34
    关注
    df=pd.DataFrame(allUniv) #把数据放入csv文件
        df100=df.loc[1:100] #增加一个中间变量
        df100.to_csv('D:\\demo\\xsb.csv',index=False,sep=',')
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 apk可以在模拟器上正常安装使用,但是手机上无法正常安装
  • ¥15 office打开卡退(新电脑重装office系统后)
  • ¥300 FLUENT 火箭发动机燃烧EDC仿真
  • ¥15 【Hadoop 问题】Hadoop编译所遇问题hadoop-common: make failed with error code 2
  • ¥15 vb6.0+webbrowser无法加载某个网页求解
  • ¥15 RPA财务机器人采购付款流程
  • ¥15 计算机图形多边形及三次样条曲线绘制
  • ¥15 根据protues画的图用keil写程序
  • ¥200 如何使用postGis实现最短领规划?
  • ¥15 pyinstaller打包错误