python——爬取教务处课表

使用python爬取教务处课表并发送到qq邮箱;
开发环境:python3.0
本文只是记录了大致过程,对用到的python具体库和语句没有细讲;

获取header信息

先到浏览器上登录到教务处网站,获取headers以免输入密码登录
我使用的chrome浏览器
按f12后 点击network 再按ctrl+r后选择下方框中的第一项
在这里插入图片描述
就可以看到Requset Headers信息:在这里插入图片描述
后面的程序中需要用到这些信息来登录网站

查看html源码

我所访问的网站html信息如图,找到所需要提取的信息
在这里插入图片描述
从上图中我们可以看到,我们需要的东西是被包含在< div style=“margin-top: 2px; font-size: 10px; color: red” >中的。(一般来说,只要是同一类的东西,他在html中的描述方式都是一样的) 因此我们就可以写代码了。

实现代码

# coding=gbk
import smtplib
import urllib.request
import requests
import os
from bs4 import BeautifulSoup
from email.mime.text import MIMEText

mail_host = 'smtp.163.com'  
#163用户名
mail_user = '************'  
#密码(部分邮箱为授权码) 
mail_pass = '************'   
#邮件发送方邮箱地址
sender = '*******@163.com'  
#邮件接受方邮箱地址,注意需要[]包裹,这意味着可以写多个邮件地址群发
receivers = ['*******@qq.com']  

url='http://***************'#爬取的网站这里用‘*’代替
headers={
    'Accept':'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
    'Accept-Encoding':'gzip, deflate',
    'Accept-Language':'zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2',
    'Cache-Control':'max-age=0',
    'Connection':'keep-alive',
    'Cookie':'*******************; CERLOGIN=M8wqKKTB1b%2Fp%2Bnl6YgP7uNF9v0HofZpUTj92pLdVHwzr8a5zewy8K9vuKdE5BUak0PXsO9ehXJbX%0ACqP3MjymeFpISgt3DlihuAF6mdj4sTKB1F08G02AyvdbE1q0plmGZOHsYuWrMVchT5Lm6J7rks7R%0AFb4xrGJdO2ghLF0%2Bz8c%3D%0A%23dfnJiDCWXARjpFlxTIZ1F8Mp%2F0GI70%2BbzRw2TogHFmu10Jx8a%2BbACVeqh4pbu0VlRh1Qgg20pn5Y%0ACo1w%2FYorz0c%2FuZzvRwbzYZ4r9wBANG1TOC8jPomxouiYO7JOqjoPNEa%2B%2BFEAFz99bPlrqrsb5sXA%0A6Lfa1************',
    'Host':'************',
    'Referer':'http://*********/Certification/',
    'Upgrade-Insecure-Requests':'1',
    'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:69.0) Gecko/20100101 Chrome/69.0'   
}#header 信息

page = requests.get(url,headers=headers)
   html=page.text
   soup = BeautifulSoup(html, 'html.parser')
   titles = soup.find_all(style="margin-top: 2px; font-size: 10px; color: red")
   with open(r"C:\Users\Administrator\kebiao.txt", "w",encoding='gbk') as file: 
       for title in titles:
           file.write(title.text)
   with open(r"C:\Users\Administrator\kebiao.txt") as file_obj:
       contents = file_obj.read()
   message = MIMEText(contents.replace('																	',''),'plain','utf-8')
   #这一部分是文字处理,我是先保存在文件夹中,再从文件中提取字符发送到邮箱      
   message['Subject'] = '***的课表' 
   message['From'] = sender      
   message['To'] = receivers[0]  
   try:
       smtpObj = smtplib.SMTP() 
       smtpObj.connect(mail_host,25)
       smtpObj.login(mail_user,mail_pass) 
       smtpObj.sendmail(
           sender,receivers,message.as_string()) 
       smtpObj.quit() 
       print('success')#成功
   except smtplib.SMTPException as e:
       print('error',e)#失败

运行

写好之后可以加个循环或者定时发送,放在服务器上运行。
在这里插入图片描述
运行成功
在这里插入图片描述

发布了11 篇原创文章 · 获赞 11 · 访问量 793

猜你喜欢

转载自blog.csdn.net/weixin_45458577/article/details/103351338
今日推荐