爬取华农数信院官网的新闻,并且发送到邮箱

信息爬取新闻

一. 实验背景

如今的生活比较繁忙,而接收到的信息量巨大,会有忽略的时候,所以我选择信息爬取实验,来爬取本校数信学院的官网上关于本科生的通知,然后发送到邮箱,方便对信息进行查阅。

二. 数据来源

华南农业大学数学与信息学院、软件学院的官网

三. 原始数据

从官网上拿到的html数据,如下是官网截图

爬取华农数信院官网的新闻,并且发送到邮箱

; 四. 数据描述和处理

用爬虫获取到的是html数据,需要使用BeautifulSoup对数据进行解析,转换成能够提取相应节点的数据。

数信官网html分析

爬取华农数信院官网的新闻,并且发送到邮箱
爬取华农数信院官网的新闻,并且发送到邮箱

五. 实验环境

编译器:pycharm2017
python版本:3.7.4

六. 程序处理步骤

  1. 使用requests包对网页发起请求,获取对于的html数据
  2. 用BeautifulSoup对html数据进行解析提取
  3. 使用smpt创建发送服务器
  4. 使用email包创建email的格式和内容
  5. 查看接受的邮件

实验结果:

爬取华农数信院官网的新闻,并且发送到邮箱
爬取华农数信院官网的新闻,并且发送到邮箱

; 七. 核心代码及解析

爬虫代码:

设置请求头的浏览器参数

    headers = {
        'User - Agent': 'Mozilla / 5.0(Windows NT 10.0; Win64; x64) AppleWebKit / 537.36(KHTML, like Gecko) Chrome / 89.0.4389.90 Safari / 537.36 Edg / 89.0.774.54'
    }

    info = requests.get(url='https://info.scau.edu.cn/3772/list.htm', headers=headers)
    info.encoding = 'utf-8'

    html = BeautifulSoup(info.text, 'html.parser')
    print(html)
    result=[]

    for i in range(0,20):

        title=html.select('.title')[i].text

        date1=html.select('.date')[i].text
        targetUrl = html.select('.desc')[i].find('a')
        a = targetUrl.get('href')
        prefixUrl = 'https://info.scau.edu.cn'
        targetUrl = prefixUrl + a

        result.append({
            "title":title,
            "date":date1,
            "href":targetUrl
        })

发送邮件代码:

smtp_server = "smtp.qq.com"
    smtp_port = 465

    smtp_key = "fqg8********8iajc"
    smtp_sender = "139******5@qq.com"
    smtp_receiver = "139******5@qq.com"

    smtp = smtplib.SMTP_SSL(smtp_server, smtp_port)
    smtp.login(smtp_sender, smtp_key)

    message = MIMEMultipart()
    message['From'] = Header("JanusV", "utf-8")
    message['To'] = Header("管理员", "utf-8")
    message['Subject'] = Header("Python SMTP Test", "utf-8")
    msgText=""
    for i in text:
        msgText=msgText+\
"""
        %s
    %s
    超链接:
    目的地址
        """%(i["title"],i["date"],i["href"])

    message.attach(MIMEText(msgText, "html", "utf-8"))
    try:
        smtp.sendmail(smtp_sender, smtp_receiver, message.as_string())
    except Exception as e:
        print('邮件发送失败--' + str(e))
    print('邮件发送成功')

八. 实验结果分析与讨论

是实验成功爬取学院官网的新闻标题和日期、超链接,然后以邮件的形式发送到指定的邮箱,方便进行信息筛查和获取。

九. 实验心得体会

这个实验是要抓取新闻、评论之类的,后来看网上的资料,爬取的网站都不是我感兴趣的,于是想到可以爬取学院的官网的通知列表,以邮件的形式定时发送,这样子可以方便自己获取到学院的动态,不用去浏览太多的网页。
实验过程中没有遇到什么特别难的问题,只是在了解smtp服务器的时候花费了比较长的时间,因为这个发送的参数设置会有不全的时候,需要一个个地调配。感觉很神奇,原来python还可以这样子发送邮件去处理发送信息,如果设置一个定时器,可以定期获取信息,发送到指定邮箱,感觉还是有一定的实用性的。

Original: https://blog.csdn.net/weixin_46739744/article/details/121602353
Author: 木棉m
Title: 爬取华农数信院官网的新闻,并且发送到邮箱

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/699612/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球