是雷姆吗 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 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么
  • ¥15 banner广告展示设置多少时间不怎么会消耗用户价值
  • ¥16 mybatis的代理对象无法通过@Autowired装填
  • ¥15 可见光定位matlab仿真
  • ¥15 arduino 四自由度机械臂
  • ¥15 wordpress 产品图片 GIF 没法显示
  • ¥15 求三国群英传pl国战时间的修改方法
  • ¥15 matlab代码代写,需写出详细代码,代价私
  • ¥15 ROS系统搭建请教(跨境电商用途)
  • ¥15 AIC3204的示例代码有吗,想用AIC3204测量血氧,找不到相关的代码。