利用搜狗微信入口制作一個微信文章爬蟲api

????????微信公眾號現(xiàn)已成為主流的一對多媒體行為活動弟晚,也是現(xiàn)在互聯(lián)網(wǎng)內(nèi)容生產(chǎn)不可忽視的一股力量嚣镜。

在此基礎(chǔ)上藕甩,微信公眾號爬蟲變得很有價值海雪,對內(nèi)容生產(chǎn)型公眾號進(jìn)行數(shù)據(jù)挖掘可以得到很多有意思、有價值的信息子房。就我所知形用,可用于微信公眾號爬蟲的方式主要有以下幾種:web微信就轧,手機客戶端抓包,搜狗微信入口田度,appium自動化測試妒御,Xposed框架等


????????其中镇饺,web微信只能被動接受公眾號消息乎莉,不能主動去查閱微信公眾號歷史消息。由此奸笤,可以通過itchat惋啃,wxpy等web微信庫來編寫一個機器人,實時接收微信推送监右,適用于需要實時更新微信推送消息的場景需求肥橙。但此方法有個弊端,首先要保證手機上自己的微信不經(jīng)常斷網(wǎng)掉線秸侣,才能使機器人長時間在線。再者宠互,用這些第三方庫長時間登陸或頻繁的登陸web微信味榛,或被封號,要是微信小號很多予跌,可以嘗試這個方法搏色。

????????手機客戶端抓包,利用fiddler或charles等抓包工具券册,算是一個比較主流(我自己感覺的orz)频轿,效率較高的方法,可以快速的抓取微信公眾號信息和歷史消息烁焙,此方法也有弊端:cookies失效快航邢,半天差不多的時間吧,有針對性的去抓取某幾個公眾號的歷史消息也是可以的骄蝇。要想通過模擬登陸微信自動獲得cookies膳殷,好像挺難的,小弟愚鈍九火,無法實現(xiàn)赚窃,貌似微信登陸是tcp協(xié)議?

????????搜狗微信入口與其他相比顯得友好的多岔激。應(yīng)該是微信搜索引擎和搜狗有合作吧勒极,所以搜狗能有微信搜索的入口。搜狗微信有兩個類型虑鼎,一是通過關(guān)鍵詞搜索文章辱匿,二是通過關(guān)鍵詞搜索公眾號键痛,并且搜索到的微信號只能獲得其最近十條消息推送(即意味著無法通過此方法爬取指定公眾號歷史消息)。這個方法還是有一些應(yīng)用場景的掀鹅,比如像獲取關(guān)于某個關(guān)鍵詞的大量文章散休,比如做一個定時任務(wù),或間隔一定時間去爬取某個微信公眾號最新十條推送來獲取其最新推送乐尊,這一點上戚丸,比web微信要好得多,搜狗微信的更新也是實時的扔嵌,直接和mp.weixin.qq.com相關(guān)聯(lián)限府。

????????appium自動化和Xposed框架我了解不多。appium類似于selenium痢缎,在移動端做自動化測試的胁勺,模擬點擊即可。Xposed框架就有很多可以搞的了独旷,Xposed可以在不修改apk的情況下做到一些額外的功能署穗,爬蟲自然是可以的,除此之外可做到以自動搶紅包嵌洼,自動回復(fù)機器人案疲,修改微信步數(shù)等等騷操作。


????????寫爬蟲也有一段時間了麻养,個人感覺實現(xiàn)爬蟲除了反反爬褐啡,爬蟲效率外,還有一個很難實現(xiàn)的地方就是爬蟲的穩(wěn)定性鳖昌,健壯性备畦,需要考慮到很多異常情況,以及合理有效的異常處理许昨,在這一點上懂盐,我覺得我還需要向各大爬蟲大佬學(xué)習(xí)。(感覺自己瞎扯了好多车要,還沒有開始我的正文(orz)允粤,感覺嫌我啰嗦的大佬請別生氣。)

????利用搜狗微信寫一個爬蟲接口翼岁,代碼很簡陋类垫,只有兩百行不到的代碼。(這里我還得吐槽一下琅坡,python寫多了悉患,總有一種自己很叼,編程很簡單的錯覺榆俺,幾行代碼就能實現(xiàn)很厲害的功能售躁,這時候需要去寫寫CPP冷靜一下坞淮,讓自己知道什么是真正的編程。)

以下記錄下我寫這個爬蟲接口腳本的過程:

1. 頁面請求分析(以公眾號搜索為例):

可以看到第一個http請求包就是我們想要的結(jié)果陪捷,查看其query string回窘,如下:

看起來挺簡單的不是,我們得到以下幾個信息:

請求url為http://weixin.sogou.com/weixin

請求類型為 Get

請求參數(shù)如上圖

發(fā)現(xiàn)將請求參數(shù)tyepe 改成 2市袖,就是獲取關(guān)鍵字搜索文章的結(jié)果

比較簡單

2. 模擬頁面請求:

我們直接用 url, 請求參數(shù)params, 還有谷歌瀏覽器的 user-agent 請求啡直,發(fā)現(xiàn)可以成功的獲取到我們想要頁面的源碼,接下來我們獲取搜索結(jié)果下的第一個公眾號即可(這意味著需要準(zhǔn)確的給定公眾號名稱苍碟,太過模糊有可能獲取到與其類似的公眾號結(jié)果)酒觅。

3. 分析頁面:

先確定爬取思路,第一步獲取微信公眾號鏈接微峰,再通過該微信公眾號鏈接獲取其最近十條推送的相關(guān)信息舷丹,包括標(biāo)題,日期蜓肆,作者颜凯,內(nèi)容摘要,內(nèi)容鏈接(事實上仗扬,我們發(fā)現(xiàn)有了微信推送鏈接之后就能很輕松的獲取其推送主體內(nèi)容装获,但不包括點贊數(shù)和閱讀數(shù),這幾個數(shù)據(jù)只能在微信手機端才能查看厉颤,如果有機會的話,下次記錄下自己手機微信抓包爬蟲的過程)凡简。

于是第一步我們獲取公眾號鏈接:

這里我們直接使用正則表達(dá)式提取即可(這么簡單的就不用xpath,bs4了逼友,依賴標(biāo)準(zhǔn)庫和第三方庫還是有所不同的。)

(抱歉被水印擋住了orz秤涩,換一張帜乞。)

?第二步根據(jù)微信公眾號鏈接獲取最近十條推送信息:

(我只寫了一篇orz,以后多加油筐眷。)

ctlr U 查看網(wǎng)頁源碼黎烈,發(fā)現(xiàn)原始信息都放在一個js變量里面。

好辦匀谣,繼續(xù)正則提取照棋,將json格式的字符串轉(zhuǎn)換成python里面的字典,有兩種辦法武翎,第一種是用? json.loads 方法烈炭, 第二種是用內(nèi)置的 eval方法,這兩種方法有些區(qū)別宝恶,比如說單引號和雙引號符隙, json格式中使用的是雙引號趴捅, python字典一般是單引號。

OK霹疫,獲得原始推送信息數(shù)據(jù)了拱绑,但這里面有很多我們用不到的信息,將其剔除一下丽蝎,值得一提的是猎拨,datetime的值是一個timestamp,我們需要將其轉(zhuǎn)化為直觀的時間表達(dá)征峦。

到此迟几,關(guān)于微信公眾號的爬蟲差不都就解決了,接下來需要將其封裝為類栏笆。主要部分代碼如下类腮。

另外,關(guān)于關(guān)鍵詞搜索文章的爬蟲接口我也一并寫了蛉加,AccountAPI蚜枢,ArticleAPI,其父類是一AP類针饥,API類有query_url, params, headers, _get_response, _get_datetime等變量和方法厂抽,供于AccountAPI,ArticleAPI共用丁眼。

代碼放在?github倉庫筷凤,有興趣可以看看

放兩張使用截圖

(ArticleAPI)
(AccountAPI)

結(jié)語:

這么簡陋的一個爬蟲稱其為api,我實在是有點膽大妄為了苞七。小打小鬧而已藐守,難登大雅之堂,需要向各位大佬虛心學(xué)習(xí)蹂风。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末卢厂,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子惠啄,更是在濱河造成了極大的恐慌慎恒,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,470評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件撵渡,死亡現(xiàn)場離奇詭異融柬,居然都是意外死亡,警方通過查閱死者的電腦和手機趋距,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,393評論 3 392
  • 文/潘曉璐 我一進(jìn)店門丹鸿,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人棚品,你說我怎么就攤上這事靠欢±鹊校” “怎么了?”我有些...
    開封第一講書人閱讀 162,577評論 0 353
  • 文/不壞的土叔 我叫張陵门怪,是天一觀的道長骡澈。 經(jīng)常有香客問我,道長掷空,這世上最難降的妖魔是什么肋殴? 我笑而不...
    開封第一講書人閱讀 58,176評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮坦弟,結(jié)果婚禮上祈惶,老公的妹妹穿的比我還像新娘胸私。我一直安慰自己疗绣,他們只是感情好踪区,可當(dāng)我...
    茶點故事閱讀 67,189評論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著赤炒,像睡著了一般氯析。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上莺褒,一...
    開封第一講書人閱讀 51,155評論 1 299
  • 那天掩缓,我揣著相機與錄音,去河邊找鬼遵岩。 笑死你辣,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的尘执。 我是一名探鬼主播绢记,決...
    沈念sama閱讀 40,041評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼正卧!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起跪解,我...
    開封第一講書人閱讀 38,903評論 0 274
  • 序言:老撾萬榮一對情侶失蹤炉旷,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后叉讥,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體窘行,經(jīng)...
    沈念sama閱讀 45,319評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,539評論 2 332
  • 正文 我和宋清朗相戀三年图仓,在試婚紗的時候發(fā)現(xiàn)自己被綠了罐盔。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,703評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡救崔,死狀恐怖惶看,靈堂內(nèi)的尸體忽然破棺而出捏顺,到底是詐尸還是另有隱情,我是刑警寧澤纬黎,帶...
    沈念sama閱讀 35,417評論 5 343
  • 正文 年R本政府宣布幅骄,位于F島的核電站,受9級特大地震影響本今,放射性物質(zhì)發(fā)生泄漏拆座。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,013評論 3 325
  • 文/蒙蒙 一冠息、第九天 我趴在偏房一處隱蔽的房頂上張望挪凑。 院中可真熱鬧,春花似錦逛艰、人聲如沸躏碳。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,664評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽唐断。三九已至,卻和暖如春杭抠,著一層夾襖步出監(jiān)牢的瞬間脸甘,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,818評論 1 269
  • 我被黑心中介騙來泰國打工偏灿, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留丹诀,地道東北人。 一個月前我還...
    沈念sama閱讀 47,711評論 2 368
  • 正文 我出身青樓翁垂,卻偏偏與公主長得像铆遭,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子沿猜,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,601評論 2 353

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