软考的成绩公布一般不知道何时,只能了解大概的时间,对于强迫症的我通常是一遍一遍的刷着网页,看已经发布了没有。想了想我还是写一个爬虫自动通知吧。
爬虫Demo
from bs4 import BeautifulSoupimport requestsimport gzipimport jsonimport timeimport randomimport datetimefrom sample import Sampleimport sysdef last_exam():payload = {}headers = {'Referer': 'https://www.ruankao.org.cn/','Cookie': 'acw_tc=2f6a1fa216394476674883497e22bcb8a599b68e914cb69d6438d82b1ccf6e; PHPSESSID=if3qrt973hq8b104k8sumijkg3; SERVERID=f7154803a54565d8f743b36388c92cfa|1639447880|1639447667'}url = "https://query.ruankao.org.cn/score/main"response = requests.request("GET", url, headers=headers, data=payload)html = response.textsoup = BeautifulSoup(html, 'html.parser')# print(soup.prettify())last_exam = soup.find_all(class_='select')[0].find_all('li')[-1]['data-value']# print(last_exam)return last_examdef is_pub():ret = Falsenew_exam = last_exam()print('{},最新公布成绩:{}'.format(datetime.datetime.now(), new_exam))if new_exam == '2021年下半年':print('考试成绩已经公布')Sample.main(sys.argv[1:])print('已发送短信通知!')ret = True# else:# print('2021年下半年考试成绩未公布!')return retif __name__ == '__main__':while True:if is_pub() is not True:time.sleep(600 + 600 * random.random())else:break
通知方式
想了想通过微信、邮件和短信的方式。邮件我一般不怎么看,微信通知还不太会,最终选择了短信通知的方式。选择了一下百度短信和阿里云短息,都需要提交企业信息,我现在没有。阿里云的短息包更便宜,最终选择了阿里云的短信包,经测试能发送测试短息,对于我来说这就够了。
示例代码,大概这个样子
client = Sample.create_client('ACCESS_KEY_ID', 'ACCESS_KEY_SECRET')send_sms_request = dysmsapi_20170525_models.SendSmsRequest(sign_name='阿里云短信测试',template_code='SMS_154950909',phone_numbers='18948345257',template_param='{"code":"6666"}')resp = client.send_sms(send_sms_request)ConsoleClient.log(UtilClient.to_jsonstring(TeaCore.to_map(resp)))
最后

现在就坐等收到短信通知啦!
初稿
2021-12-14
