([\s\S]*?)'Entry="http://weixin" />

日韩久久久精品,亚洲精品久久久久久久久久久,亚洲欧美一区二区三区国产精品 ,一区二区福利

Python 抓取微信公眾號賬號信息的方法

系統 1718 0

Python 抓取微信公眾號賬號信息的方法_第1張圖片

搜狗微信搜索提供兩種類型的關鍵詞搜索,一種是搜索公眾號文章內容,另一種是直接搜索微信公眾號。通過微信公眾號搜索可以獲取公眾號的基本信息及最近發布的10條文章,今天來抓取一下微信公眾號的賬號信息

爬蟲

首先通過首頁進入,可以按照類別抓取,通過“查看更多”可以找出頁面鏈接規則:

Python 抓取微信公眾號賬號信息的方法_第2張圖片

            
import requests as req
import re
reTypes = r'id="pc_\d*" uigs="(pc_\d*)">([\s\S]*?)'
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
          

上面代碼通過加載更多頁面獲取加載列表,進而從其中抓取微信公眾號詳情頁面:

            
reProfile = r'
            
  • 進入詳情頁面可以獲取公眾號的 名稱/ID/功能介紹/賬號主體/頭像/二維碼/最近10篇文章 等信息:

    Python 抓取微信公眾號賬號信息的方法_第3張圖片 ?

    注意事項

    詳情頁面鏈接: http://mp.weixin.qq.com/profile?src=3&timestamp=1477208282&ver=1&signature=8rYJ4QV2w5FXSOy6vGn37sUdcSLa8uoyHv3Ft7CrhZhB4wO-bbWG94aUCNexyB7lqRNSazua-2MROwkV835ilg==

    1. 驗證碼

    訪問詳情頁面時有可能需要驗證碼,自動識別驗證碼還是很有難度的,因此要做好爬蟲的偽裝工作。

    2. 未保存詳情頁面鏈接

    詳情頁面的鏈接中有兩個重要參數: timestamp & signature ,這說明頁面鏈接是有時效性的,所以保存下來應該也沒用;

    3. 二維碼

    二維碼圖片鏈接同樣具有時效性,因此如需要最好將圖片下載下來。

    用 Flask 展示結果

    最近 Python 社區出現了一款異步增強版的 Flask 框架: Sanic ,基于 uvloop 和 httptools ,可以達到異步、更快的效果,但保持了與 Flask 一致的簡潔語法。雖然項目剛起步,還有很多基本功能為實現,但已經獲得了很多關注( 2,222 Star )。這次本打算用抓取的微信公眾號信息基于 Sanic 做一個簡單的交互應用,但無奈目前還沒有加入模板功能,異步的 redis 驅動也還有 BUG 沒解決,所以簡單嘗試了一下之后還是切換回 Flask + SQLite,先把抓取結果呈現出來,后續有機會再做更新。

    安裝 Sanic

    Python 抓取微信公眾號賬號信息的方法_第4張圖片

    Debug Sanic

    Python 抓取微信公眾號賬號信息的方法_第5張圖片 ?

    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("/
                
                  ")
    @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 抓取微信公眾號賬號信息,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對腳本之家網站的支持!
    如果你覺得本文對你有幫助,歡迎轉載,煩請注明出處,謝謝!


    更多文章、技術交流、商務合作、聯系博主

    微信掃碼或搜索:z360901061

    微信掃一掃加我為好友

    QQ號聯系: 360901061

    您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

    【本文對您有幫助就好】

    您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

    發表我的評論
    最新評論 總共0條評論
    主站蜘蛛池模板: 白沙| 长岭县| 神农架林区| 西安市| 木兰县| 长顺县| 舒兰市| 安仁县| 淮阳县| 郴州市| 阿尔山市| 万全县| 江华| 张家界市| 奉化市| 青海省| 阿图什市| 四川省| 如皋市| 申扎县| 会昌县| 塔河县| 大渡口区| 阿巴嘎旗| 永新县| 英山县| 察哈| 苍南县| 大同市| 靖安县| 东丰县| 石楼县| 双鸭山市| 朝阳县| 闽清县| 彰武县| 巴林右旗| 广灵县| 梓潼县| 淅川县| 滨州市|