Python爬取微信公眾號(hào)(網(wǎng)頁(yè)微信法)

我的之前的一篇文章介紹了怎么用anyproxy中間人代理的方法來(lái)爬取微信公眾號(hào),現(xiàn)在有另一種方法吴汪,原理是通過(guò)網(wǎng)頁(yè)微信激捏,用的是wxpy框架,wxpy框架是一個(gè)微信聊天機(jī)器人框架沧竟,wxpy框架基于itchat框架,itchat框架也是一個(gè)微信聊天機(jī)器人框架缚忧,wxpy框架是改進(jìn)了itchat框架的微信聊天機(jī)器人框架悟泵,其實(shí)wxpy框架也能很方便地獲取到公眾號(hào)文章的推送。項(xiàng)目的源碼:https://github.com/zjhpure/crawler_public_number_web

1闪水、先說(shuō)流程糕非,使用wxpy框架掃二維碼--登錄網(wǎng)頁(yè)微信--掛著網(wǎng)頁(yè)微信--接收網(wǎng)頁(yè)微信的各種推送--判斷推送是否為公眾號(hào)最新文章推送,若是就進(jìn)行各種過(guò)濾操作后入庫(kù)。

2朽肥、關(guān)鍵代碼很簡(jiǎn)單禁筏,不超過(guò)50行,還能很實(shí)時(shí)地接收到公眾號(hào)文章的最新推送衡招,

# coding: utf-8
from wxpy import *

# 初始化機(jī)器人篱昔,掃碼登陸,在命令行上登錄console_qr參數(shù)必須設(shè)置為True
# 因?yàn)樵诿钚械卿洸粫?huì)彈出二維碼圖片始腾,只會(huì)在命令行上直接生成二維碼
bot = Bot(console_qr=True)

# 打印來(lái)自其他好友州刽、群聊和公眾號(hào)的消息
@bot.register()
def print_others(msg):
    print('msg:' + str(msg))
    articles = msg.articles
    if articles is not None:
        for article in articles:
            print('title:' + str(article.title))
            print('summary:' + str(article.summary))
            print('url:' + str(article.url))
            print('cover:' + str(article.cover))

if __name__ == '__main__':
    # 或者僅僅堵塞線程
    bot.join()
運(yùn)行過(guò)程

但是目前有個(gè)缺陷,article里沒(méi)有文章的發(fā)表時(shí)間浪箭,這一點(diǎn)我覺(jué)得有些奇怪穗椅,因?yàn)槲彝ㄟ^(guò)抓包網(wǎng)頁(yè)微信是看到有公眾號(hào)文章推送的時(shí)間戳的,按理說(shuō)這里的article應(yīng)該要有個(gè)發(fā)表時(shí)間的屬性的奶栖。以下是wxpy框架articles方法的源碼匹表,

@property
def articles(self):
    """
    公眾號(hào)推送中的文章列表 (首篇的 標(biāo)題/地址 與消息中的 text/url 相同)

    其中,每篇文章均有以下屬性:

    * `title`: 標(biāo)題
    * `summary`: 摘要
    * `url`: 文章 URL
    * `cover`: 封面或縮略圖 URL
    """

    from wxpy import MP
    if self.type == SHARING and isinstance(self.sender, MP):
        tree = ETree.fromstring(self.raw['Content'])
        # noinspection SpellCheckingInspection
        items = tree.findall('.//mmreader/category/item')

        article_list = list()

        for item in items:
            def find_text(tag):
                found = item.find(tag)
                if found is not None:
                    return found.text

            article = Article()
            article.title = find_text('title')
            article.summary = find_text('digest')
            article.url = find_text('url')
            article.cover = find_text('cover')
            article_list.append(article)

        return article_list

并沒(méi)有發(fā)表時(shí)間的這一屬性宣鄙。因?yàn)閣xpy框架是基于itchat框架的袍镀,所以有可能是wxpy框架沒(méi)有繼承到itchat里的文章發(fā)表時(shí)間數(shù)據(jù),或者itchat框架本身就沒(méi)有文章發(fā)表時(shí)間數(shù)據(jù)框冀。這個(gè)問(wèn)題可以有一個(gè)折中的解決方法流椒,如果文章的發(fā)表時(shí)間的準(zhǔn)確性對(duì)于你的業(yè)務(wù)來(lái)說(shuō)沒(méi)有多大影響的,可以用接收到推送的時(shí)間作為文章的發(fā)表時(shí)間明也,但是如果文章發(fā)表時(shí)間的準(zhǔn)確性很重要就不行了宣虾,因?yàn)榻邮盏酵扑偷臅r(shí)間會(huì)有延遲,而且也可能會(huì)出現(xiàn)凌晨前發(fā)出的文章温数,凌晨后爬蟲(chóng)服務(wù)器才接收到推送绣硝,那發(fā)表時(shí)間的日期就錯(cuò)了,而且也會(huì)有可能爬蟲(chóng)服務(wù)器的時(shí)間本身就出錯(cuò)了撑刺。

3鹉胖、用網(wǎng)頁(yè)微信這種方法來(lái)爬取公眾號(hào),只能爬取到最新推送的公眾號(hào)文章够傍,不能爬取公眾號(hào)歷史消息甫菠,因?yàn)榫W(wǎng)頁(yè)微信本身就沒(méi)有查看公眾號(hào)歷史消息的功能,但是這種方法卻能很及時(shí)地爬取到公眾號(hào)的最新推送冕屯,但是一旦爬取時(shí)出了錯(cuò)寂诱,就無(wú)法挽回了。這種方法還要注意封號(hào)的問(wèn)題安聘,不能掛著時(shí)間太長(zhǎng)痰洒,因?yàn)橐粋€(gè)正常的微信號(hào)是不會(huì)很長(zhǎng)時(shí)間掛著網(wǎng)頁(yè)微信的瓢棒,可以嘗試用多個(gè)微信號(hào)輪流切換著掛網(wǎng)頁(yè)微信。這種方法用來(lái)登錄網(wǎng)頁(yè)微信的微信號(hào)條件要比anyproxy中間人代理的方法高丘喻,印象中微信號(hào)需要綁定銀行卡才可以脯宿。

4、其實(shí)爬取公眾號(hào)不能只用一種方法的泉粉,只用一種方法存在很大的風(fēng)險(xiǎn)连霉,是需要多種方法結(jié)合一起用的,多種方法競(jìng)爭(zhēng)獲取文章列表源搀继,添加到redis文章隊(duì)列中窘面,再由另外一個(gè)服務(wù)不斷地獲取redis文章隊(duì)列來(lái)爬取文章翠语,詳細(xì)請(qǐng)看接下來(lái)的文章分析叽躯。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市肌括,隨后出現(xiàn)的幾起案子点骑,更是在濱河造成了極大的恐慌,老刑警劉巖谍夭,帶你破解...
    沈念sama閱讀 218,036評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件黑滴,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡紧索,警方通過(guò)查閱死者的電腦和手機(jī)袁辈,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,046評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)珠漂,“玉大人晚缩,你說(shuō)我怎么就攤上這事∠蔽#” “怎么了荞彼?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,411評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)待笑。 經(jīng)常有香客問(wèn)我鸣皂,道長(zhǎng),這世上最難降的妖魔是什么暮蹂? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,622評(píng)論 1 293
  • 正文 為了忘掉前任寞缝,我火速辦了婚禮,結(jié)果婚禮上仰泻,老公的妹妹穿的比我還像新娘荆陆。我一直安慰自己,他們只是感情好我纪,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,661評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布慎宾。 她就那樣靜靜地躺著丐吓,像睡著了一般。 火紅的嫁衣襯著肌膚如雪趟据。 梳的紋絲不亂的頭發(fā)上券犁,一...
    開(kāi)封第一講書(shū)人閱讀 51,521評(píng)論 1 304
  • 那天,我揣著相機(jī)與錄音汹碱,去河邊找鬼粘衬。 笑死,一個(gè)胖子當(dāng)著我的面吹牛咳促,可吹牛的內(nèi)容都是我干的稚新。 我是一名探鬼主播,決...
    沈念sama閱讀 40,288評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼跪腹,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼褂删!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起冲茸,我...
    開(kāi)封第一講書(shū)人閱讀 39,200評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤屯阀,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后轴术,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體难衰,經(jīng)...
    沈念sama閱讀 45,644評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,837評(píng)論 3 336
  • 正文 我和宋清朗相戀三年逗栽,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了盖袭。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,953評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡彼宠,死狀恐怖鳄虱,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情兵志,我是刑警寧澤醇蝴,帶...
    沈念sama閱讀 35,673評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站想罕,受9級(jí)特大地震影響悠栓,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜按价,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,281評(píng)論 3 329
  • 文/蒙蒙 一惭适、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧楼镐,春花似錦癞志、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,889評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)错洁。三九已至,卻和暖如春戒突,著一層夾襖步出監(jiān)牢的瞬間屯碴,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,011評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工膊存, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留导而,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,119評(píng)論 3 370
  • 正文 我出身青樓隔崎,卻偏偏與公主長(zhǎng)得像今艺,于是被迫代替她去往敵國(guó)和親爵卒。 傳聞我的和親對(duì)象是個(gè)殘疾皇子虚缎,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,901評(píng)論 2 355

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

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,133評(píng)論 25 707
  • 歡迎關(guān)注我的公眾號(hào):讀書(shū)主義 更多精彩等著你! 這個(gè)讀書(shū)方法技潘,可能會(huì)顛覆你對(duì)讀書(shū)以往的認(rèn)知|開(kāi)卷 或許讀書(shū)已經(jīng)成為...
    米米粒粒閱讀 34,576評(píng)論 9 209
  • 1遥巴、通過(guò)CocoaPods安裝項(xiàng)目名稱項(xiàng)目信息 AFNetworking網(wǎng)絡(luò)請(qǐng)求組件 FMDB本地?cái)?shù)據(jù)庫(kù)組件 SD...
    陽(yáng)明先生_X自主閱讀 15,980評(píng)論 3 119
  • 我走過(guò)很多地方的路,行遍了江南的橋享幽。我喜歡鏡頭下驚艷的世界。 這張圖拾弃,是在個(gè)園值桩。本是淡季,沒(méi)有多少游客豪椿,我們又是在...
    i黎子閱讀 327評(píng)論 0 6
  • Every single day without dancing is one day we betrayed o...
    Bella_5d8b閱讀 513評(píng)論 0 1