爬取某高校研究生院最新通知
一、需求描述
近年来高校毕业生激增,就业、升学、考公、创业人数都有所增加,但近年来考研人数也快速增加,2020年已突破341万,估计明年会迈进400万的大关,下面我列个近年来的考研人数图,如图1.1、1.2所示。在这里预祝所有考研的同学们都顺利考上自己心仪的高校。话说碰到今年的疫情,各行各个都有影响,咱们的初试、复试时间一再延期,还好线上举办,及有效的防止人员流动造成的疫情的传播、也方便大家的备考、调剂以及时间成本。大家都是初试复试已经过了,就差一个拟录取通知,各高校通知复试结果时间不一,少则一两天,多则一两个星期,但每天不时的刷新官网的最新通知着实繁琐,如何第一时间刷到通知哪?下面我用简单的 Python 程序来实现,一来打发疫情在家的闲时间,二来做下笔记,方便复习,也欢迎同行们交流。
二、前期准备
python 解释器的安装、Pycharm 下载
python官网:https://www.python.org/(打开加载有点慢)
pycharm 官网 :https://www.jetbrains.com (下载免费的社区版即可满足日常使用)
三、实现方法
目标:爬取某高校研究生院最新通知
- 使用urllib和BeautifulSoup两个python库
- 安装的话使用 pip 安装即可,在 Dos下 输入 pip +库名 + install 或者在编辑器里安装
import urllib.request
import urllib.parse
from bs4 import BeautifulSoup
# 直接使用 urlopen('网址') 返回 404 错误,对方网站设置有反爬虫机制
requst = urllib.request.Request('http://sjxy.whpu.edu.cn/index/tzgg.htm')
requst.add_header('User-Agent', 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)') # 添加请求头,模仿人使用浏览器访问页面
response = urllib.request.urlopen(requst)
# 一、获取该网址的源代码
html = response.read()
# 二、解析源代码
bs = BeautifulSoup(html, 'html.parser') # 爬取该网址的 HTML 源代码
# 三、使用 find_all 方法找到最新同志所在的标签
tr = bs.find_all('tr', {'id': 'line_u3_0'}) # 使用 find_all() 方法 id 选择器找到指定的 tr 标签
# print(tr) # 爬取的的结果存放在列表中,使用时需要加下标,否则会报错
# AttributeError: ResultSet object has no attribute 'find_all'.
print('--------------------------------')
print('通知时间:', tr[0].find_all('p')[1].get_text())
print('通知标题:', tr[0].p.get_text()[2:])
print('链接:', 'http://sjxy.whpu.edu.cn/' + tr[0].a['href'][2:])
print('-----------分割线----------------')
四、小结
代码比较简单,后续功能也在完善学习中,希望可以多多交流,觉得不错可以点个赞,或者评论交流呀