Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >【代码】利用Python每天自动发新闻到邮箱

【代码】利用Python每天自动发新闻到邮箱

作者头像
Maynor
发布于 2023-02-02 07:18:26
发布于 2023-02-02 07:18:26
61902
代码可运行
举报
运行总次数:2
代码可运行

前言

偶然间想到每天推送新闻给自己,在网上搜了下果然有轮子,不过代码跑不起来,于是自己改了下 https://blog.csdn.net/qq_42374697/article/details/122144486

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# -*- coding: utf-8 -*-
"""
Created on Fri Dec 24 15:21:51 2021

@author: ABC
"""

# smtplib 用于邮件的发信动作
import smtplib
from email.mime.text import MIMEText
# email 用于构建邮件内容
from email.header import Header
# 用于构建邮件头
import json
import hashlib
import base64
import hmac
import os
import time
import requests
from urllib.parse import quote_plus
from lxml import etree
import urllib.request  # 提取网址数据
import gzip


def get_weather_data():
    city_name = '重庆'
    url1 = 'http://wthrcdn.etouch.cn/weather_mini?city=' + urllib.parse.quote(city_name)
    weather_data = urllib.request.urlopen(url1)
    weather_data = weather_data.read()
    weather_data = gzip.decompress(weather_data).decode('utf-8')
    weather_dict = json.loads(weather_data)
    return weather_dict


def show_weather(weather_data):
    # 将形参数据值即(return weather_dict)赋值给这里的weather_dict变量
    import requests
    from lxml import etree
    base_url = 'https://www.tianqi.com/chongqing/'
    headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko)'
                             + 'Chrome/62.0.3202.94 Safari/537.36'}
    res = requests.get(base_url, headers=headers)
    html = res.text
    html = etree.HTML(html)
    riqi = html.xpath('//dl[@class="weather_info"]/dd[@class="week"]/text()')[0].replace(' ', ' ')
    tianqi = html.xpath('//dl[@class="weather_info"]/dd[@class="weather"]/span/b/text()')[0]
    now = ''.join(html.xpath('//dl[@class="weather_info"]/dd[@class="weather"]/p[@class="now"]//text()'))
    wendu = html.xpath('//dl[@class="weather_info"]/dd[@class="weather"]/span/text()')[0]
    shidu = html.xpath('//dl[@class="weather_info"]/dd[@class="shidu"]/b[1]/text()')[0]
    shidu1 = html.xpath('//dl[@class="weather_info"]/dd[@class="shidu"]/b[2]/text()')[0]
    shidu2 = html.xpath('//dl[@class="weather_info"]/dd[@class="shidu"]/b[3]/text()')[0]
    kongqi = html.xpath('//dl[@class="weather_info"]/dd[@class="kongqi"]/h5/text()')[0]
    pM = html.xpath('//dl[@class="weather_info"]/dd[@class="kongqi"]/h6/text()')[0]
    richu = html.xpath('//dl[@class="weather_info"]/dd[@class="kongqi"]/span/text()')[0]
    richu2 = html.xpath('//dl[@class="weather_info"]/dd[@class="kongqi"]/span/text()')[1]
    yu = html.xpath('//div[@class="weather_life300"]/ul/li[1]/a/p/text()')[0]
    weather_dict = weather_data
    if weather_dict.get('desc') == 'invilad-citykey':
        print('你输入的城市名有误,或者天气中心未收录你所在城市')
    elif weather_dict.get('desc') == 'OK':
        forecast = weather_dict.get('data').get('forecast')

        if '雨' in yu:
            tishi = '今日可能下雨,记得带伞哦!' + weather_dict.get('data').get('ganmao')
        else:
            tishi = +weather_dict.get('data').get('ganmao')

        b = '------重庆天气查询------\n' + \
            riqi + '\n' + '天气:' + tianqi + '\n' + '当前气温:' + now + '\n' + '温度:' + wendu + '\n' + shidu + '\n' + shidu1 + '\n' + shidu2 + '\n' + kongqi + '\n' + \
            pM + '\n' + richu + '\n' + richu2 + '\n' \
                                                '-----------------------' + '\n' \
                                                                            '明日天气:', forecast[1].get('type') + '\n' \
                                                                                                               '最高气温:', \
            forecast[1].get('high').replace('高温 ', '') + '\n' \
                                                         '最低气温:', forecast[1].get('low').replace('低温 ', '') + '\n' \
                                                                                                              '温馨提示:', tishi
        return b

def main_handler(arg1,agr2):
    pass

def jianbao():
    base_url = 'https://www.163.com/dy/media/T1603594732083.html'
    headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko)'
                             + 'Chrome/62.0.3202.94 Safari/537.36'}
    # 获取新闻列表页
    res = requests.get(base_url, headers=headers)
    html = res.text
    html = etree.HTML(html)
    # 获取第一条新闻
    today_url = html.xpath("//ul[@class='list_box cur']/li/a/@href")[0]
    # 获取详情页数据
    resp_1 = requests.get(today_url, headers=headers).text
    html_1 = etree.HTML(resp_1)

    # 获取新闻详情
    news_list = html_1.xpath('//div[@class="post_body"]/p[2]//text()')[1:]
    a = '\n'.join(news_list)
    a = a.replace('365资讯简报,每天精选15条热点新闻简报1条微语,', '')

    return a

if __name__ == "__main__":
    # 发信方的信息:发信邮箱,QQ 邮箱授权码
    from_addr = 'xx@qq.com'
    password = 'xx'
    # 收信方邮箱
    to_addr = 'xx@qq.com'
    # 发信服务器
    smtp_server = 'smtp.qq.com'
    # 邮箱正文内容,第一个参数为内容,第二个参数为格式(plain 为纯文本),第三个参数为编码

    # b = show_weather(get_weather_data())
    # b = '下午好,xx\n' + "".join(b)
    a = jianbao()
    c = a+ '\n' + '\n' + '------------------------------------\n'
    msg = MIMEText(eval('c'), 'plain', 'utf-8')
    # 邮件头信息
    msg['From'] = Header(from_addr)
    msg['To'] = Header(to_addr)
    msg['Subject'] = Header('Never say die.下午好,Maynor')
    # 开启发信服务,这里使用的是加密传输
    server = smtplib.SMTP_SSL(smtp_server)
    server.connect(smtp_server, 465)
    # 登录发信邮箱
    server.login(from_addr, password)
    # 发送邮件
    server.sendmail(from_addr, to_addr, msg.as_string())
    # 关闭服务器
    server.quit()
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-01-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
程序员用技术手段让发国难财的奸商,无机可乘!
面对这样一场天灾,大部分人的选择是,有钱出钱,有力出力,没钱又没力的就待在家里自我隔离,尽量不给国家添堵。
养码场
2020/02/18
3340
Python爬虫自动化 帮小姐姐解放双手
经过分析发现,网页结构简单,可以通过构造URL来请求,获取网页源码,然后从中提取出我们想要的数据即可
叶庭云
2020/11/24
5120
Python爬虫自动化    帮小姐姐解放双手
Python数据分析之猫眼电影TOP100
如果大家经常阅读Python爬虫相关的公众号,都会是以爬虫+数据分析的形式展现的,这样很有趣,图表也很不错,今天了,我就来分享上一次在培训中的一个作品:猫眼电影爬虫及分析。 通过猫眼电影TOP100榜的爬虫,然后进行可视化,让学员体会到,小数据爬虫也能玩出这样的花样来。
罗罗攀
2018/12/26
1.2K0
Python爬虫练习 爬取网络小说保存到txt
利用python爬虫爬取网络小说保存到txt,熟悉利用python抓取文本数据的方法。
叶庭云
2020/09/17
5.8K1
Python爬虫练习     爬取网络小说保存到txt
python3对于抓取租房房屋信息的进一
# -*- coding: utf-8 -*- # File : 7链家抓取--抓取经纪人信息.py # Author: HuXianyong # Date : 2018-08-30 15:41 from urllib import request from time import sleep from lxml import etree ''' 在开始之前我们应该先查看下我们每次打开下一页链家网页的时候他的url上面有什么变化 我们每每点击下一页的时候他的url也对应的加上了page+n 还有就是
py3study
2020/01/03
3630
bugku&github自动签到脚本
建议脚本运行在国内,因为bugku貌似把国外屏蔽了。但是GitHub在国内经常被墙,需要自定义一下host,或者用github的镜像站,
R0A1NG
2022/02/19
9870
bugku&github自动签到脚本
Python爬取小说并写入word文档
目标网站就是我们知名的笔趣阁:https://www.biquzw.la/,知名的搬运网站,受众很大,书源也是海量的,主要是没限制的话,好爬!
MinChess
2023/03/08
8950
Python爬取小说并写入word文档
# Py编写自动化脚本每天发送邮件提醒天气(舔狗必备)
首先获取天气api 我这里使用的是和风天气api 先注册一个然后控制台保存自己的唯一key下面要用!! 然后 重点 很多之前的教程都是v6所以已经不适用了 这是正确的链接格式 https://d
Symbol125
2022/11/11
3770
对于房天下租房信息进行爬取
对于房天下租房信息进行爬取 代码 import re import requests from lxml.html import etree url_xpath = '//dd/p[1]/a[1]/@href' title_xpath = '//dd/p[1]/a[1]/@title' data_xpaht = '//dd/p[2]/text()' headers = { 'rpferpr': 'https://sh.zu.fang.com/', 'User-Agent': 'Mozil
小小咸鱼YwY
2019/09/11
5590
Python的Xpath介绍和语法详解
XPath是一门在XML和HTML文档中查找信息的语言,可以用来在XML和HTML文档中对元素和属性进行遍历
Lansonli
2021/10/09
4.2K0
买不到口罩怎么办?Python爬虫帮你时刻盯着自动下单!| 原力计划
并且,淘宝上一些新店口罩库存写着非常多,但不发货,不是骗钱就是采集个人信息,销量都非常高几 W 几十 W 的销量。而在京东上,即使有到货通知,但往往还没等到通知就被抢购完了。
AI科技大本营
2020/02/20
1.5K0
买不到口罩怎么办?Python爬虫帮你时刻盯着自动下单!| 原力计划
九、Python发送QQ邮件(SMTP)
看了廖雪峰老师的教程: 一封电子邮件的旅程就是 发件人 -> MUA -> MTA -> MTA -> 若干个MTA -> MDA <- MUA <- 收件人 有了上述基本概念,要编写程序来发送和接收邮件,本质上就是: 编写MUA把邮件发到MTA; 编写MUA从MDA上收邮件。 发邮件时,MUA和MTA使用的协议就是SMTP:Simple Mail Transfer Protocol,后面的MTA到另一个MTA也是用SMTP协议。 收邮件时,MUA和MDA使用的协议有两种:POP:Post Of
酱紫安
2018/04/16
2.5K0
Python 爬虫+tkinter界面 实现历史天气查询
该网站提供了全国34个省、市所属的2290个地区的历史天气预报查询,数据来源于城市当天的天气信息,可以查询到历史天气气温,历史风向,历史风力等历史天气状况。
叶庭云
2020/09/17
1.6K0
厉害了,一个比ChatGPT简单、快速的免费网站
ChatGPT这阵子的火热程度大家都有目共睹。前些日子因为这玩意儿还第一次在电脑上尝试访问国外网站,虽然没注册成功,但好像奇奇怪怪的知识又增加了。
偶尔敲代码
2023/04/28
7430
厉害了,一个比ChatGPT简单、快速的免费网站
分享1个爬虫小案例,还能语音播报!
要用到requests库,lxml库,pyttsx3库,没有的,可以先安装一下,都可以通过pip安装:
double
2020/11/03
8830
Python爬虫系列:用邮件来通知爬虫异常状况
如果Python爬虫发生了故障,希望第一时间来通知自己,这个时候可以通过email来向自己报告。
龙哥
2018/10/22
1.1K0
Python爬虫系列:用邮件来通知爬虫异常状况
如何让你在众多二手车中挑中满意的?python帮你实现(附源码)
老司机带你去看车,网上的几千条的二手车数据,只需几十行代码,就可以统统获取,保存数据到我们本地电脑上
松鼠爱吃饼干
2020/09/15
4060
如何让你在众多二手车中挑中满意的?python帮你实现(附源码)
写日报的代码
coding: utf-8 from lxml import etree import requests,urllib from requests.models import Response import xlsxwriter import datetime from openpyxl import load_workbook import re from selenium import webdriver 网站888文章更新函数 def drinks888(url): datas=[]
用户4393181
2021/12/22
1.7K0
21天打造分布式爬虫-数据解析实战(三)
3.1.豆瓣电影 使用lxml import requests from lxml import etree headers = { 'User-Agent':'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.140 Safari/537.36', 'Referer':'https://movie.douban.com/' } url = 'ht
zhang_derek
2018/08/01
3500
Python爬虫自动化,帮小姐姐解放双手
漂亮学姐因为工作需要,得根据已有的学校名单,采集它们的英文名称,描述,简称有的话也带上。共有 2740 条学校名称数据,一条条去搜索得到结果,然后复制粘贴到表格里,一天下来估计人都傻了。
朱小五
2021/01/21
3960
推荐阅读
相关推荐
程序员用技术手段让发国难财的奸商,无机可乘!
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档