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

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=',')
    评论
    解决 无用
    打赏 举报

相关推荐 更多相似问题