使用Python怎么抓取微信公眾號(hào)賬號(hào)信息?很多新手對(duì)此不是很清楚,為了幫助大家解決這個(gè)難題,下面小編將為大家詳細(xì)講解,有這方面需求的人可以來(lái)學(xué)習(xí)下,希望你能有所收獲。
首先通過首頁(yè)進(jìn)入,可以按照類別抓取,通過“查看更多”可以找出頁(yè)面鏈接規(guī)則:
import requests as req import re reTypes = r'id="pc_\d*" uigs="(pc_\d*)">([\s\S]*?)</a>' Entry = "http://weixin.sogou.com/" entryPage = req.get(Entry) allTypes = re.findall(reTypes, getUTF8(entryPage)) for (pcid, category) in allTypes: for page in range(1, 100): url = 'http://weixin.sogou.com/pcindex/pc/{}/{}.html'.format(pcid, page) print(url) categoryList = req.get(url) if categoryList.status_code != 200: break
上面代碼通過加載更多頁(yè)面獲取加載列表,進(jìn)而從其中抓取微信公眾號(hào)詳情頁(yè)面:
reProfile = r'<li id[\s\S]*?<a href="([\s\S]*?)" rel="external nofollow" ' allProfiles = re.findall(reOAProfile, getUTF8(categoryList)) for profile in allProfiles: profilePage = req.get(profile) if profilePage.status_code != 200: continue
進(jìn)入詳情頁(yè)面可以獲取公眾號(hào)的 名稱/ID/功能介紹/賬號(hào)主體/頭像/二維碼/最近10篇文章 等信息:
注意事項(xiàng)
詳情頁(yè)面鏈接: http://mp.weixin.qq.com/profile?src=3×tamp=1477208282&ver=1&signature=8rYJ4QV2w5FXSOy6vGn37sUdcSLa8uoyHv3Ft7CrhZhB4wO-bbWG94aUCNexyB7lqRNSazua-2MROwkV835ilg==
1. 驗(yàn)證碼
訪問詳情頁(yè)面時(shí)有可能需要驗(yàn)證碼,自動(dòng)識(shí)別驗(yàn)證碼還是很有難度的,因此要做好爬蟲的偽裝工作。
2. 未保存詳情頁(yè)面鏈接
詳情頁(yè)面的鏈接中有兩個(gè)重要參數(shù): timestamp & signature ,這說(shuō)明頁(yè)面鏈接是有時(shí)效性的,所以保存下來(lái)應(yīng)該也沒用;
3. 二維碼
二維碼圖片鏈接同樣具有時(shí)效性,因此如需要最好將圖片下載下來(lái)。
用 Flask 展示結(jié)果
最近 Python 社區(qū)出現(xiàn)了一款異步增強(qiáng)版的 Flask 框架: Sanic ,基于 uvloop 和 httptools ,可以達(dá)到異步、更快的效果,但保持了與 Flask 一致的簡(jiǎn)潔語(yǔ)法。雖然項(xiàng)目剛起步,還有很多基本功能為實(shí)現(xiàn),但已經(jīng)獲得了很多關(guān)注( 2,222 Star )。這次本打算用抓取的微信公眾號(hào)信息基于 Sanic 做一個(gè)簡(jiǎn)單的交互應(yīng)用,但無(wú)奈目前還沒有加入模板功能,異步的 redis 驅(qū)動(dòng)也還有 BUG 沒解決,所以簡(jiǎn)單嘗試了一下之后還是切換回 Flask + SQLite,先把抓取結(jié)果呈現(xiàn)出來(lái),后續(xù)有機(jī)會(huì)再做更新。
安裝 Sanic
Debug Sanic
Flask + SQLite App
from flask import g, Flask, render_template import sqlite3 app = Flask(__name__) DATABASE = "./db/wx.db" def get_db(): db = getattr(g, '_database', None) if db is None: db = g._database = sqlite3.connect(DATABASE) return db @app.teardown_appcontext def close_connection(exception): db = getattr(g, '_database', None) if db is not None: db.close() @app.route("/<int:page>") @app.route("/") def hello(page=0): cur = get_db().cursor() cur.execute("SELECT * FROM wxoa LIMIT 30 OFFSET ?", (page*30, )) rows = [] for row in cur.fetchall(): rows.append(row) return render_template("app.html", wx=rows, cp=page) if __name__ == "__main__": app.run(debug=True, port=8000)Python主要用來(lái)做什么
Python主要應(yīng)用于:1、Web開發(fā);2、數(shù)據(jù)科學(xué)研究;3、網(wǎng)絡(luò)爬蟲;4、嵌入式應(yīng)用開發(fā);5、游戲開發(fā);6、桌面應(yīng)用開發(fā)。
看完上述內(nèi)容是否對(duì)您有幫助呢?如果還想對(duì)相關(guān)知識(shí)有進(jìn)一步的了解或閱讀更多相關(guān)文章,請(qǐng)關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝您對(duì)創(chuàng)新互聯(lián)的支持。
文章標(biāo)題:使用Python怎么抓取微信公眾號(hào)賬號(hào)信息-創(chuàng)新互聯(lián)
標(biāo)題網(wǎng)址:http://chinadenli.net/article4/ejjie.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供ChatGPT、企業(yè)建站、電子商務(wù)、網(wǎng)站內(nèi)鏈、域名注冊(cè)、小程序開發(fā)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容