Python | 使用wechatsogou抓取公眾號文章并發(fā)送郵件

作為一個 `coder` 我們每天都在看一些書七咧,博客或者大牛的公眾號和措,生怕被技術(shù)淘汰. 但是訂閱多個公眾號钮热,每天看公眾號是否有新消息,也要浪費大量的時間和精力窘问,如果公眾號文章出現(xiàn)更新辆童,能自動發(fā)送到郵件宜咒,這樣既可以在一個環(huán)境中查看多個公眾號的文章惠赫,也可以省去我們查看多個公眾號浪費的時間.

作為一個技術(shù)人員,在給他人提供便利的同時故黑,也要給自己提供遍歷儿咱,那就寫一個腳本就好了

# 用到的庫

- wechatsogou(https://github.com/Chyroc/WechatSogou)

>**wechatsogou** 基于搜狗微信搜索的微信公眾號爬蟲接口,可以擴展成基于搜狗搜索的爬蟲

**代碼**

注釋是在寫文章的時候加上的场晶,不一定符合 pep 標(biāo)準(zhǔn)混埠,還請諒解

```python

import os

import pickle

import smtplib

from email.header import Header

from email.mime.text import MIMEText

from email.utils import parseaddr, formataddr

import requests

import wechatsogou

# 發(fā)件人地址

from_address = 'zyndev@163.com'

# 發(fā)件人郵箱密碼

password = ''

# 郵箱服務(wù)器

smtp_server = 'smtp.163.com'

fail_count = 0

fail_list = []

sent_list = []

# 添加一個文件,將已經(jīng)發(fā)送成功的文章標(biāo)題序列化到文件诗轻,防止多次運行導(dǎo)致重復(fù)發(fā)送郵件

file_path = 'sent_articles_file'

# 一些敏感詞钳宪,簡單過濾一下

sensitive_words = ['鄙視鏈', '中獎名單', '成功說一口流利英語', '婚姻', '戀愛']

ws_api = wechatsogou.WechatSogouAPI()

# 獲取公眾號文章信息

def get_article(gzh):

? ? articles = ws_api.get_gzh_article_by_history(gzh)

? ? print(len(articles['article']))

? ? return articles['article']

# 設(shè)置下編碼

def _format_addr(s):

? ? name, addr = parseaddr(s)

? ? return formataddr((Header(name, 'utf-8').encode(), addr))

# 發(fā)送郵件

def send_mail(to_address, subject, msg_html):


? ? server = smtplib.SMTP(smtp_server, 25)

? ? # server.set_debuglevel(1)

? ? server.login(from_address, password)

? ? # msg = MIMEText('hello, send by Python...', 'plain', 'utf-8')

? ? msg = MIMEText(msg_html, 'html', 'utf-8')

? ? msg['From'] = _format_addr('張瑀楠 <%s>' % from_address)

? ? msg['To'] = _format_addr(' Dear ')

? ? msg['Subject'] = Header(subject, 'utf-8').encode()

? ? try:

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

? ? except:

? ? ? ? global fail_count

? ? ? ? fail_count += 1

? ? ? ? fail_list.append(subject)

if '__main__' == __name__:

? ? # 定義一個公眾號列表

? ? gzh_list = ['全棧布道士', '編程人生', 'importNew', 'Python開發(fā)者', '非著名程序員',

? ? ? ? ? ? ? ? 'Python之美', '機器學(xué)習(xí)研究會', '程序員大咖', '51CTO', '純潔的微笑']

? ? # 指定郵箱列表,這里有個建議扳炬,請郵件列表中將發(fā)件人添加到白名單吏颖,降低發(fā)送的失敗率

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

? ? for gzh in gzh_list:

? ? ? ? # 查找公眾號之前,先從文件中反序列化出已經(jīng)成功發(fā)送的文章列表

? ? ? ? if os.path.exists(file_path):

? ? ? ? ? ? f = open(file_path, 'rb')

? ? ? ? ? ? sent_list = pickle.load(f)

? ? ? ? ? ? f.close()

? ? ? ? articles = get_article(gzh)

? ? ? ? for article in articles:

? ? ? ? ? ? print(article['title'],'\n\t' ,article['content_url'])

? ? ? ? ? ? fileid = str(article['send_id']) + '_' + str(article['fileid'])

? ? ? ? ? ? # 如果新文章不在文章列表中恨樟,則發(fā)送

? ? ? ? ? ? if fileid not in sent_list:

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

? ? ? ? ? ? ? ? send_mail(mail_list, article['title'], response_text)

? ? ? ? ? ? ? ? sent_list.append(fileid)

? ? ? ? print('發(fā)布數(shù)量', len(articles), '失敗數(shù)量', fail_count)

? ? ? ? print('=' * 40)

? ? ? ? for subject in fail_list:

? ? ? ? ? ? print(subject)

? ? ? ? # 單個公眾號文章發(fā)送完畢后半醉,將新的已發(fā)送文章列表序列化,防止出現(xiàn)中途退出劝术,造成重復(fù)發(fā)送

? ? ? ? f = open(file_path, 'wb')

? ? ? ? pickle.dump(sent_list, f)

? ? ? ? f.close()

```

# 小結(jié)

主要用到了 `wechatsogou` 這個庫來獲取公眾號的文章信息缩多,關(guān)于這個庫的使用可以訪問 github(https://github.com/Chyroc/WechatSogou)

可以結(jié)合`windows` 或者 `linux` 的定時任務(wù)來設(shè)置每天運行一次

windows10 設(shè)置定時任務(wù)方法(https://jingyan.baidu.com/article/f79b7cb313f13a9145023e4a.html)

**推薦幾個公眾號**

- 全棧布道士? (我自己在寫)

- 編程人生

- importNew (基本每天都有一些java相關(guān)文章發(fā)布)

- Python開發(fā)者

- Python之美 (豆瓣大佬董偉明的公眾號呆奕,干活多)

- 51CTO

- 純潔的微笑(對于 Spring Cloud 和 Spring Boot 有疑惑可以多看看)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市衬吆,隨后出現(xiàn)的幾起案子梁钾,更是在濱河造成了極大的恐慌,老刑警劉巖咆槽,帶你破解...
    沈念sama閱讀 212,718評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件陈轿,死亡現(xiàn)場離奇詭異,居然都是意外死亡秦忿,警方通過查閱死者的電腦和手機麦射,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,683評論 3 385
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來灯谣,“玉大人潜秋,你說我怎么就攤上這事√バ恚” “怎么了峻呛?”我有些...
    開封第一講書人閱讀 158,207評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長辜窑。 經(jīng)常有香客問我钩述,道長,這世上最難降的妖魔是什么穆碎? 我笑而不...
    開封第一講書人閱讀 56,755評論 1 284
  • 正文 為了忘掉前任牙勘,我火速辦了婚禮,結(jié)果婚禮上所禀,老公的妹妹穿的比我還像新娘方面。我一直安慰自己,他們只是感情好色徘,可當(dāng)我...
    茶點故事閱讀 65,862評論 6 386
  • 文/花漫 我一把揭開白布恭金。 她就那樣靜靜地躺著,像睡著了一般褂策。 火紅的嫁衣襯著肌膚如雪横腿。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 50,050評論 1 291
  • 那天斤寂,我揣著相機與錄音耿焊,去河邊找鬼。 笑死扬蕊,一個胖子當(dāng)著我的面吹牛搀别,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播尾抑,決...
    沈念sama閱讀 39,136評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼歇父,長吁一口氣:“原來是場噩夢啊……” “哼蒂培!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起榜苫,我...
    開封第一講書人閱讀 37,882評論 0 268
  • 序言:老撾萬榮一對情侶失蹤护戳,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后垂睬,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體媳荒,經(jīng)...
    沈念sama閱讀 44,330評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,651評論 2 327
  • 正文 我和宋清朗相戀三年驹饺,在試婚紗的時候發(fā)現(xiàn)自己被綠了钳枕。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,789評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡赏壹,死狀恐怖鱼炒,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情蝌借,我是刑警寧澤昔瞧,帶...
    沈念sama閱讀 34,477評論 4 333
  • 正文 年R本政府宣布,位于F島的核電站菩佑,受9級特大地震影響自晰,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜稍坯,卻給世界環(huán)境...
    茶點故事閱讀 40,135評論 3 317
  • 文/蒙蒙 一酬荞、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧劣光,春花似錦袜蚕、人聲如沸糟把。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,864評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽遣疯。三九已至雄可,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間缠犀,已是汗流浹背数苫。 一陣腳步聲響...
    開封第一講書人閱讀 32,099評論 1 267
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留辨液,地道東北人虐急。 一個月前我還...
    沈念sama閱讀 46,598評論 2 362
  • 正文 我出身青樓,卻偏偏與公主長得像滔迈,于是被迫代替她去往敵國和親止吁。 傳聞我的和親對象是個殘疾皇子被辑,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,697評論 2 351

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn)敬惦,斷路器盼理,智...
    卡卡羅2017閱讀 134,638評論 18 139
  • 1、開啟公眾號開發(fā)者模式 公眾平臺的技術(shù)文檔目的為了簡明扼要的交代接口的使用俄删,語句難免苦澀難懂宏怔,甚至對于不同的讀者...
    good7758閱讀 1,513評論 0 1
  • 無戒365訓(xùn)練營極限挑戰(zhàn)第10天第七節(jié) 何柳雖然不辦公,卻仍然掌握著科室的工作動態(tài)畴椰。雖然陳世寧的姿態(tài)有些耐人尋味臊诊,...
    流花河閱讀 337評論 3 5
  • 手機里一直安裝著一個app即刻,這個app有許多的訂閱主題斜脂。有一天app給我推薦了一個主題妨猩,每天一句馬男的名句,截...
    midlight閱讀 814評論 0 1
  • 木易味的蕋茗閱讀 87評論 0 0