Python爬取研招网数据

2023-11-04

一、爬虫定制部分

# 导入相关的包
import requests
import lxml.html
import chardet
import pandas as pd
import numpy as np


#请求头获取页面
def get_page(url,headers):
    try:
        r=requests.get(url, headers=headers)
        r.raise_for_status()
        r.encoding=r.apparent_encoding
        return r.text
    except Exception as e:
        print(e)


# 定制请求头
headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.122 Safari/537.36'}

二、爬取并解析网页

# 爬取的网址url
url = "https://yz.chsi.com.cn/kyzx/fsfsx34/201703/20170306/1589083359.html"
page = get_page(url,headers)
selector = lxml.html.fromstring(page)


# 利用xpath进行数据的爬取,数据保存到列表中
sample = []
for i in range(2,13):
    subject = selector.xpath('//*[@id="article_dnull"]/table[1]/tbody/tr[{}]/td/p/text()'.format(i))
    sample.append([subject[0],subject[1],subject[-1]])
    

三、保存数据

# 将数据用DataFrame表示并输出到csv
df = pd.DataFrame(data=sample,dtype='object',columns=['学科代码','名称', '总分'])
df.to_csv('C:/Users/David/Desktop/东南大学2017年初试学术学位成绩.csv',header=True,index=False,encoding='utf-8')

四、绘图分析

'''
    绘图部分
'''
import matplotlib
import matplotlib.pyplot as plt
import numpy as np


labels = df['名称']
grade_2019 = df['2019年总分']
grade_2018 = df['2018年总分']
grade_2017 = df['2017年总分']
grade_2016 = df['2016年总分']


x = np.arange(len(labels))  # the label locations
width = 0.15  # the width of the bars

type(x-width/2)

fig, ax = plt.subplots()
rects1 = ax.bar(x - width/2, grade_2016, width, label='2016')
rects2 = ax.bar(x + width/2, grade_2017, width, label='2017')
rects3 = ax.bar(x + width/2 +width, grade_2018, width, label='2018')
rects4 = ax.bar(x + width/2 +width + width, grade_2019, width, label='2019')

# Add some text for labels, title and custom x-axis tick labels, etc.
ax.set_ylabel('分数')
ax.set_title('东南大学2016-2019年初试学术学位成绩')
ax.set_xticks(x)
ax.set_xticklabels(labels)
ax.legend()
plt.show()

五、全代码

#!/usr/bin/env python
# coding: utf-8

# 导入相关的包
import requests
import lxml.html
import chardet
import pandas as pd
import numpy as np


#请求头获取页面
def get_page(url,headers):
    try:
        r=requests.get(url, headers=headers)
        r.raise_for_status()
        r.encoding=r.apparent_encoding
        return r.text
    except Exception as e:
        print(e)


# 定制请求头
headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.122 Safari/537.36'}



#########################################################################################
# 爬取的网址url
url = "https://yz.chsi.com.cn/kyzx/fsfsx34/201703/20170306/1589083359.html"
page = get_page(url,headers)
selector = lxml.html.fromstring(page)


# 利用xpath进行数据的爬取,数据保存到列表中
sample = []
for i in range(2,13):
    subject = selector.xpath('//*[@id="article_dnull"]/table[1]/tbody/tr[{}]/td/p/text()'.format(i))
    sample.append([subject[0],subject[1],subject[-1]])
    
    
# 将数据用DataFrame表示并输出到csv
df = pd.DataFrame(data=sample,dtype='object',columns=['学科代码','名称', '总分'])
df.to_csv('C:/Users/David/Desktop/东南大学2016年初试学术学位成绩.csv',header=True,index=False,encoding='utf8')
#################################################################################

# 爬取的网址url
url = "https://yz.chsi.com.cn/kyzx/fsfsx34/201703/20170306/1589085174.html"
page = get_page(url,headers)
selector = lxml.html.fromstring(page)


# 利用xpath进行数据的爬取,数据保存到列表中
sample = []
for i in range(2,13):
    id = selector.xpath('//*[@id="article_dnull"]/table[1]/tbody/tr[{}]/td[1]/span/text()'.format(i))
    subject = selector.xpath('//*[@id="article_dnull"]/table[1]/tbody/tr[{}]/td[2]/text()'.format(i))
    grade = selector.xpath('//*[@id="article_dnull"]/table[1]/tbody/tr[{}]/td[7]/div/span/text()'.format(i))
    sample.append([id[0],subject[0],grade[0]])
    
    
# 将数据用DataFrame表示并输出到csv
df = pd.DataFrame(data=sample,dtype='object',columns=['学科代码','名称', '总分'])
df.to_csv('C:/Users/David/Desktop/东南大学2017年初试学术学位成绩.csv',header=True,index=False,encoding='utf-8')
#############################################################################################
# 爬取的网址url
url = "https://yz.chsi.com.cn/kyzx/fsfsx34/201803/20180305/1664240306.html"
page = get_page(url,headers)
selector = lxml.html.fromstring(page)


# 利用xpath进行数据的爬取,数据保存到列表中
sample = []
for i in range(2,13):
    id = selector.xpath('//*[@id="article_dnull"]/center[1]/table/tbody/tr[{}]/td[1]/text()'.format(i))
    subject = selector.xpath('//*[@id="article_dnull"]/center[1]/table/tbody/tr[{}]/td[2]/text()'.format(i))
    grade = selector.xpath('//*[@id="article_dnull"]/center[1]/table/tbody/tr[{}]/td[7]/text()'.format(i))
    sample.append([id[0],subject[0],grade[0]])
    
    
# 将数据用DataFrame表示并输出到csv
df = pd.DataFrame(data=sample,dtype='object',columns=['学科代码','名称', '总分'])
df.to_csv('C:/Users/David/Desktop/东南大学2018年初试学术学位成绩.csv',header=True,index=False,encoding='utf-8')

##################################################################################################
# 爬取的网址url
url = "https://yz.chsi.com.cn/kyzx/fsfsx34/201903/20190306/1770746646.html"
page = get_page(url,headers)
selector = lxml.html.fromstring(page)


# 利用xpath进行数据的爬取,数据保存到列表中
sample = []
for i in range(2,13):
    id = selector.xpath('//*[@id="article_dnull"]/table[1]/tbody/tr[{}]/td[1]/text()'.format(i))
    subject = selector.xpath('//*[@id="article_dnull"]/table[1]/tbody/tr[{}]/td[2]/text()'.format(i))
    grade = selector.xpath('//*[@id="article_dnull"]/table[1]/tbody/tr[{}]/td[7]/text()'.format(i))
    sample.append([id[0],subject[0],grade[0]])
    
    
# 将数据用DataFrame表示并输出到csv
df = pd.DataFrame(data=sample,dtype='object',columns=['学科代码','名称', '总分'])
df.to_csv('C:/Users/David/Desktop/东南大学2019年初试学术学位成绩.csv',header=True,index=False,encoding='utf-8')

#############################################################################################3

'''
        绘图准备部分
'''
import pandas as pd
df_2019 = pd.read_csv("C:/Users/David/Desktop/东南大学2019年初试学术学位成绩.csv")
df_2018 = pd.read_csv("C:/Users/David/Desktop/东南大学2018年初试学术学位成绩.csv")
df_2017 = pd.read_csv("C:/Users/David/Desktop/东南大学2017年初试学术学位成绩.csv")
df_2016 = pd.read_csv("C:/Users/David/Desktop/东南大学2016年初试学术学位成绩.csv")	

df_2019['学科代码']

df = pd.DataFrame(data=df_2019)
df = df.rename(columns = {"总分": "2019年总分"})
df['2018年总分'] = df_2018['总分']
df['2017年总分'] = df_2017['总分']
df['2016年总分'] = df_2016['总分']

df.to_csv('C:/Users/David/Desktop/东南大学2016-2019年初试学术学位成绩.csv',header=True,index=False,encoding='utf-8')


############################################
'''
    绘图部分
'''
import matplotlib
import matplotlib.pyplot as plt
import numpy as np


labels = df['名称']
grade_2019 = df['2019年总分']
grade_2018 = df['2018年总分']
grade_2017 = df['2017年总分']
grade_2016 = df['2016年总分']


x = np.arange(len(labels))  # the label locations
width = 0.15  # the width of the bars

type(x-width/2)

fig, ax = plt.subplots()
rects1 = ax.bar(x - width/2, grade_2016, width, label='2016')
rects2 = ax.bar(x + width/2, grade_2017, width, label='2017')
rects3 = ax.bar(x + width/2 +width, grade_2018, width, label='2018')
rects4 = ax.bar(x + width/2 +width + width, grade_2019, width, label='2019')

# Add some text for labels, title and custom x-axis tick labels, etc.
ax.set_ylabel('分数')
ax.set_title('东南大学2016-2019年初试学术学位成绩')
ax.set_xticks(x)
ax.set_xticklabels(labels)
ax.legend()
plt.show()
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python爬取研招网数据 的相关文章

  • 用Python创造无穷可能,独家教你如何开发赚钱项目!

    前言 Python都可以做哪些副业 1 兼职处理数据Excel整理数据功能虽然很强大 但在Python面前 曾经统治职场的它也的败下阵来 因为Python在搜集数据整理分析数据的过程中更加便捷 通过几行代码还可以实现自动化操作 如果你学会P
  • 爬虫入门第4课:定义代理IP的数据模型类

    爬虫学习知识点及案例篇 汇总 爬虫入门第1课 代理池概述及开发环境 爬虫入门第2课 代理池的设计 爬虫入门第3课 实现代理池思路 本阶段带大家从代理池的设计开始 学习Python爬虫及项目实战 详情关注上方专栏 目标 定义代理IP的数据模型
  • 代理IP的高匿名,匿名和透明的区别

    如果从隐藏使用代理用户的级别上划分 代理可以分为三种 即高度匿名代理 普通匿名代理和透明代理 1 高度匿名代理不改变客户机的请求 这样在服务器看来就像有个真正的客户浏览器在访问它 这时客户的真实IP是隐藏的 服务器端不会认为我们使用了代理
  • Python 不用selenium 带你高效爬取京东商品评论

    文章目录 一 项目说明 1 项目背景 2 项目环境 二 项目实施 1 项目分析 2 代码实现 导入模块和定义常量 爬取评论主体函数 主函数 三 项目分析和说明 1 运行测试 2 改进分析 3 其他说明 一 项目说明 1 项目背景 一天 一朋
  • [Python爬虫] 在Windows下安装PhantomJS和CasperJS及入门介绍(上)

    最近在使用Python爬取网页内容时 总是遇到JS临时加载 动态获取网页信息的困难 例如爬取CSDN下载资源评论 搜狐图片中的 原图 等 此时尝试学习Phantomjs和CasperJS来解决这个问题 这第一篇文章当然就是安装过程及入门介绍
  • python模拟登录京东网页

    目标网站 京东网首页登录 目标网址 https www jd com 任务要求 1 导入selenium库 并使用该库驱动Chrom浏览器 完成请求 2 驱动浏览器对象 找到登录按钮 点击 3 在新页面中选择账号登录 4 找到用户名和密码输
  • Python爬虫实战之电影爬取过程

    俗话说 兴趣所在 方能大展拳脚 so结合兴趣的学习才能事半功倍 更加努力专心 apparently本次任务是在视频网站爬取一些好看的小电影 地址不放 狗头保命 只记录过程 实现功能 从网站上爬取采用m3u8分段方式的视频文件 对加密的 ts
  • Python爬虫(一):编写简单爬虫之新手入门

    最近学习了一下python的基础知识 大家一般对 爬虫 这个词 一听就比较熟悉 都知道是爬一些网站上的数据 然后做一些操作整理 得到人们想要的数据 但是怎么写一个爬虫程序代码呢 相信很多人是不会的 今天写一个针对新手入门想要学习爬虫的文章
  • Anaconda简介

    anaconda是python发行的包的管理工具 其中自带python的版本 还带很多python的包 安装它比安装python好 可以省掉再安装python包的时间 推荐使用Anaconda 用Anaconda安装python的包是非常便
  • 知乎美女挖掘指南--Python实现自动化图片抓取、颜值评分

    声明 文中所有文字 图片以及相关外链中直接或间接 明示或暗示涉及性别 颜值分数等信息全部由相关人脸检测接口给出 无任何客观性 仅供参考 1 数据源 知乎 话题 美女 下所有问题中回答所出现的图片 2 抓取工具 Python 3 并使用第三方
  • Python爬虫10-Selenium模拟登录

    目录 10 1Selenium和PhantomJS和headless chrome 10 1 1Selenium的概念和安装 10 1 2浏览器的选择和安装 10 2Selenium和PhantomJS与Chrome的配合使用 10 2 1
  • 抓取得物数据出现验证码的解析思路

    原创来自本人的公众号 阿嚏个技术 公众号文章地址 得物采集数据出现geetest验证码的解析方式 本文仅提供反爬技术的分析思路 勿做商业用途 如有侵权 请联系删除 之前写过一篇爬得物数据的文章 毒 得物 APP历史购买数据抓取 阅读数还是挺
  • [Python爬虫] Selenium获取百度百科旅游景点的InfoBox消息盒

    前面我讲述过如何通过BeautifulSoup获取维基百科的消息盒 同样可以通过Spider获取网站内容 最近学习了Selenium Phantomjs后 准备利用它们获取百度百科的旅游景点消息盒 InfoBox 这也是毕业设计实体对齐和属
  • 使用Postman抓取Chrome请求快速生成Request请求代码

    最近在练习爬虫的时候 爬取网站时常常需要模拟浏览器去访问 但是使用request发送请求时 需要填写headers也就是头部信息 但我又是一个懒得复制的人 尝试了很多软件 最后找到了一款特别适合我自己的 方便快捷 话不多说 放链接 下载地址
  • 6个Python童年小游戏,开始敲起来,玩吧!

    你的童年 我的童年好像都一样 谁的童年又没玩过游戏呢 这些小游戏应该只有玩过才会懂吧 虽然程序员敲代码多年 但童心还是一直都在的 今天就分享一些私藏的童年游戏 十几行代码就能进入使用Python开发的小游戏快乐玩耍 1 五子棋 童年游戏不可
  • python爬取豆瓣电影json数据

    由于豆瓣里的电影都有专属的id 获取到id后可以进一步爬取其他页面的内容 首先来到主界面 https movie douban com 观察网页 点击 选电影 进入需要爬取的界面 打开Chrome开发模式 并下拉网页观察新生成的文件 可以观
  • 爬虫 跨域请求 获取json数据 解决参数加密

    分析网址 提示 抓取对方信息是通过对方允许的 请不要违法操作 抓取其他个人有关信息 网址先发送了一个OPTIONS请求 Request URL http xxxxxxxx com Request Method OPTIONS Status
  • Python爬虫-MongoDB

    Python爬虫 MongoDB 文章目录 Python爬虫 MongoDB 前言 与MySQL对比 启动 关闭MongoDB 操作 数据库操作 集合操作 数据操作 增 删 改 查 保存 运算符 高级操作 聚合 常用管道 常用表达式 安全性
  • 故障分析系列(01) —— scrapy爬虫速度突然变慢原因分析

    故障分析系列 01 scrapy爬虫速度突然变慢原因分析 1 问题背景 在所有环境都没变的情况下 scrapy爬虫每天能爬取的数据量从3月5号开始急剧减少 后面几天数据量也是越来越少 2 环境 系统 win7 python 3 6 1 sc
  • python3爬虫伪装代理IP

    在爬取类似 起点 色魔张大妈 这样的网站时 会被网站看出是爬虫机制 这时需要伪装成浏览器以及使用IP代理的方式来爬去正常内容 实例 import re import requests import urllib request from l

随机推荐

  • 多层Unity3D物体模型穿透问题处理

    本文针对在一个界面中展示多层3D物体时遇到的模型穿透问题提出一些解决方案 如图 当我们想要在同一个界面中展示两层或以上3D物体时 有时会因为第一层物体材质上的 shader 渲染深度被破坏或其它原因导致第一层的物体穿透到第二层界面上来了 在
  • FTP-----局域网内部远程桌面

    此文包含详细的图文教程 有疑问评论区留言 博主第一时间解决 目录 一 被远程桌面的电脑 1 开启远程权限 2 添加账户 有本地账户跳过这步 3 帐号隶属于 远程桌面 4 帐号隶属于 本地用户组 二 本地电脑连接远程桌面 前提条件 1 两台电
  • 蚁剑jsp一句话木马

    参考链接 https github com yzddmr6 JspForAntSword 密码为 passwd
  • 【深度学习图像识别课程】keras实现CNN系列:(5)应用数据增强进行CIFAR10分类

    一 图像增强简介 如何保证图像的标度不变性 大小 平移不变性 位置 旋转不变性 角度 最大池化层 保证平移不变性 增强 训练集扩展 对训练图片进行随机旋转或者平移 保证平移不变性 旋转不变性 避免过拟合 keras文档 https kera
  • spark集群8080端口页面只显示master的情况

    电脑配置是一台物理机作为master 一台物理机作为slave 在master启动运行后 使用jps命令分别查看两台机器的运行状况 master与slave均运行正常 但是进入master 8080的web控制端查看运行状态时候 发现只有m
  • 写一个python函数 用cuda加速

    好的 下面是一个用 CUDA 加速的 Python 函数的示例 import numpy as np import cupy as cp def accelerate with cuda x y 将 numpy 数组转换为 cupy 数组
  • 【视觉slam十四讲笔记】Sophus库的使用

    Sophus库的使用 include
  • Day03 Python之 可迭代对象Iterable和迭代器Iterator、迭代器协议

    一 什么是可迭代对象 iterable 1 可迭代对象 iterable 可以通过for in 这类语句遍历读取数据的对象 如 列表 字符串 元组 字典 集合 2 for循环工作原理 在内部对可迭代对象调用iter 方法 获取到迭代器对象
  • 02_ue4界面介绍

    1 菜单栏 1 文件 加载保存项目和关卡等 2 编辑 项目设置 标准的复制和粘贴操作 3 窗口 打开视图和其他面板 如果不小心关了窗口 可以在里面找 4 帮助 获得在线文档等帮助 2 工具栏 快速访问常用工具 1 保存当前关卡 2 对当前关
  • Flink 水位线

    水位线是什么 窗口 有了 但是要知道我们面对的是实时数据 而这些数据随时会出现延迟的情况 从几秒到几小时都有可能 如果要忽略这些数据 那么显然对于结果的计算是不准确的 可是要等待这些延迟数据的话 那岂不是等同于批处理了 我们等不了那么久的
  • CentOS7上安装 Apache

    在 CentOS 7 上安装 Apache 的方法如下 1 首先打开终端 并使用 sudo 命令以 root 权限运行 sudo su 2 更新软件包列表 yum update 3 安装 Apache 服务器和常用工具 yum instal
  • C++【对象模型】

    文章目录 索引 一 默认构造函数 1 何时默认构造函数会自动生成 2 编译器合成有用的构造函数四种情况 2 1 类中内含带有默认构造的类成员 2 2 带有默认构造的基类 2 3 带有虚函数的类 2 4 带有一个虚基类的类 索引 C 对象模型
  • Jetbrain项目管理全家桶

    sudo mkdir p m 750 opt hub data opt hub conf opt hub logs opt hub backups sudo chown R 13001 13001 opt hub data opt hub
  • ppt地图分布图一块一块的怎么做_学会“地图话”,走遍天下都不怕!

    PPT是维他命 hi 这里是PPT是维他命 谢谢你的关注 我们一起进步 hello大家 又 好久不见了 心虚 距离上次更新已经快两个月了 说好的半月更 说好的尽快发地球公转 都是我的锅 从十一开始因为加课时一直在调整节奏 忙到原地陀螺转 这
  • Vue中使用七牛云上传报错o.upload.addEventListener is not a function以及其他报错问题

    1 运行提示o upload addEventListener is not a function 解决方案 此方法不是根本解决办法 问题3的解决办法是最终解决方案 找到node modules mockjs dist mock js 第8
  • 北京大学肖臻老师《区块链技术与应用》公开课 06-BTC-网络

    总述 用户将交易发布到比特币网络上 节点收到这些交易之后 将其打包到区块里 节点将区块发布到比特币网络中 新发布的区块在比特币网络中如何传播 The Bitcoin Network 比特币工作在应用层 application layer B
  • 羞羞的报告:2020年轻人性爱数据报告。

    VI 腾讯新闻谷雨数据出品 ID guyudata 转自 小蚊子数据分析 今天开工第一天 就来分享点数据相关的轻松的内容 2020年 多少人实现了性爱需求的满足 多少人处于性需求的 贫困线 以下 在性幻想 性需求的表达等方面 男女之间的抉择
  • 云杰恒指:7.29恒指期货实盘指导交易复盘

    对于一个成熟交易者来说 盈利是市场给的 没有属于我们的行情 我们坚持不会开仓 看不懂的行情不开仓 直到交易信号出现 然后精准出击 获得属于我们自己的利润 曾有人对技术分析过度依赖 在一次爆仓后找到我 我给出的答案是技术分析本来就是一会准一会
  • 一致性 Hash 算法(分布式或均衡算法)

    简介 一致性哈希算法在1997年由麻省理工学院提出的一种分布式哈希 DHT 实现算法 设计目标是为了解决因特网中的热点 Hot spot 问题 初衷和CARP十分类似 一致性哈希修正了CARP使用的简单哈希算法带来的问题 使得分布式哈希 D
  • Python爬取研招网数据

    一 爬虫定制部分 导入相关的包 import requests import lxml html import chardet import pandas as pd import numpy as np 请求头获取页面 def get p