爬取某学校官网通知
一、爬取网页所有通知
需求:有时候对于学生党来说,每次大考之后,查分数都是特别心急,特别是对于学校官网的通知等,本笔记主要关注这一点,以下是实现内容。
# 使用 urllib 和 BeautifulSoup 库实现
import urllib.request
import urllib.parse
from bs4 import BeautifulSoup
# 一、获取网址中的HTML源代码存储为python list对象
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()
# 三、使用 BeauSoup() 对象实现对 HTML 页面的解析 ,使用 python 自带的解析方式 ‘html.parser’
bs = BeautifulSoup(html, 'html.parser')
# 四、定位 通知信息所在的 table 标签,使用find_all() 方法,class 类选择器查找
tables = bs.find_all('table', class_= "in_list2") # {'class' : 'in_list2'} 两种写法
# 五、查找 table 表格下的行标签 tr 获取 list 对象
tab = tables[0].find_all('tr')
# print(tab)
# 六、 遍历 tr 得到 本页面的所有通知
print('--------------------------------')
for tr in tab:
for td in tr.find_all('td') :
print('通知时间:' , td.find_all('p')[1].get_text())
print('通知标题:' , td.p.get_text()[2:])
print('链接:' , 'http://sjxy.whpu.edu.cn/' + td.a['href'][2:])
print('-----------分割线----------------')
二、小结
以上是简单的爬取页面,其中还有很多功能没有实现,比如:把通知存放到数据库,把最新通知发送到自己手机,不用人死盯着页面刷新等等,后续功能在慢慢学习中,有错误的方法还请各位指正,非常感谢这篇文章有缘见到你,谢谢。