如何利用Python脚本自动抓取微信公众号更新并发送至邮箱

作为一名“程序员”,我们每天都会阅读一些书籍、博客或名人的公众号,生怕被技术淘汰。但订阅多个公众号,每天查看公众号是否有新消息,也浪费了大量的时间和精力。 ,如果公众号文章有更新,可以自动发送到邮箱。这样不仅可以在一个环境下查看多个公众号的文章,还可以节省我们查看多个公众号所浪费的时间。

如何利用Python脚本自动抓取微信公众号更新并发送至邮箱

作为技术人员,在给别人提供方便的同时,也要为自己提供遍历,所以写个脚本就可以了。

#使用的库

-wechatsogou()

>**wechatsogou** 基于搜狗微信搜索的微信公众号爬虫接口,可扩展为基于搜狗搜索的爬虫

**代码**

注释是在撰写文章时添加的,可能不符合 PEP 标准。请理解。

````蟒蛇

导入操作系统

进口泡菜

导入smtplib

从 email.header 导入标头

从 email.mime.text 导入 MIMEText

从 email.utils 导入 parseaddr, formataddr

导入请求

导入微信狗

# 发件人地址

from_address = 'zyndev@163.com'

# 发件人邮箱密码

密码=''

# 电子邮件服务器

smtp_server = 'smtp.163.com'

失败计数 = 0

失败列表 = []

发送列表 = []

# 添加一个文件,将成功发送的文章标题序列化到文件中,防止多次运行导致重复发送邮件。

file_path = '已发送文章文件'

# 一些敏感词,简单过滤即可

sensitive_words = ['蔑视链','获奖名单','成功说一口流利的英语','结婚','爱情']

ws_api = wechatsogou.WechatSogouAPI()

# 获取公众号文章信息

def get_article(gzh):

文章 = ws_api.get_gzh_article_by_history(gzh)

print(len(文章['文章']))

返回文章['文章']

# 设置编码

def _format_addr(s):

名称、地址 = parseaddr(s)

返回 formataddr((标头(name, 'utf-8').encode(), addr))

# 发送电子邮件

def send_mail(收件人地址,主题,msg_html):

服务器 = smtplib.SMTP(smtp_server, 25)

# server.set_debuglevel(1)

server.login(发件人地址,密码)

# msg = MIMEText('你好,通过 Python 发送...', 'plain', 'utf-8')

味精 = MIMEText(msg_html, 'html', 'utf-8')

msg['From'] = _format_addr('张雨楠' % from_address)

msg['To'] = _format_addr('亲爱的')

msg['主题'] = 标头(主题, 'utf-8').encode()

尝试:

server.sendmail(from_address, to_address, msg.as_string())

除了:

全局失败计数

失败计数 += 1

failed_list.append(主题)

如果 '__main__' == __name__:

#定义公众账号列表

gzh_list = ['全栈布道者', '编程人生', 'importNew', 'Python开发者', '非著名程序员',

《Python之美》《机器学习研究会》《程序员大师》《51CTO》《纯真的微笑》】

# 指定邮箱列表。这是一个建议。请将邮件列表中的发件人添加到白名单中,以减少发送失败率。

mail_list = ['hbyunan@yeah.net', '913396132@qq.com', 'zyndev@gmail.com', '935855148@qq.com']

对于 gzh_list 中的 gzh:

# 搜索公众号之前,先从文件中反序列化已发送成功的文章列表。

如果 os.path.exists(file_path):

f = 打开(文件路径,'rb')

发送列表 = pickle.load(f)

f.close()

文章 = get_article(gzh)

对于文章中的文章:

print(文章['标题'],'\n\t',文章['content_url'])

fileid = str(文章['send_id']) + '_' + str(文章['fileid'])

# 如果新文章不在文章列表中,则发送

如果 fileid 不在发送列表中:

response_text = requests.get(article['content_url']).text

send_mail(邮件列表,文章['标题'],response_text)

发送列表.append(fileid)

print('出版物数量', len(articles), '失败数量', failure_count)

打印('=' * 40)

对于fail_list中的主题:

打印(主题)

# 单篇公众号文章发送后,将新发送的文章列表序列化,防止中途退出和重复发送。

f = 打开(文件路径,'wb')

pickle.dump(sent_list, f)

f.close()

````

# 概括

库“wechatsogou”主要用于获取公众号的文章信息。对于这个库的使用,可以访问github()

可以与`windows`或`linux`的计划任务结合起来,设置为每天运行一次。

windows10设置计划任务方法()

**推荐几个公众号**

- 全栈布道者(我自己写的)

- 编程生活

你可能想看:
« 上一篇
下一篇 »

相关推荐

python爬虫教程PDF,Python爬虫书PDF

2026年09月02日

32阅读

外国教程python,python编程教学视频

2026年09月02日

27阅读

python简明教程沈洁元,python详细基础教程

2026年09月02日

21阅读

python库包教程,python 包

2026年09月02日

27阅读

python教程大全集,python教程600集

2026年09月02日

27阅读

python入门教程完整版,python零基础入门全套教程视频

2026年09月02日

23阅读