91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

使用Python怎么抓取微信公眾號賬號信息

發布時間:2021-05-20 17:22:09 來源:億速云 閱讀:272 作者:Leah 欄目:開發技術

使用Python怎么抓取微信公眾號賬號信息?很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。

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

使用Python怎么抓取微信公眾號賬號信息

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

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

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

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

使用Python怎么抓取微信公眾號賬號信息 

注意事項

詳情頁面鏈接: 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怎么抓取微信公眾號賬號信息

Debug Sanic

使用Python怎么抓取微信公眾號賬號信息 

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主要用來做什么

Python主要應用于:1、Web開發;2、數據科學研究;3、網絡爬蟲;4、嵌入式應用開發;5、游戲開發;6、桌面應用開發。

看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注億速云行業資訊頻道,感謝您對億速云的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

庆元县| 米易县| 拜城县| 胶南市| 井研县| 双牌县| 青田县| 乌什县| 钟山县| 双鸭山市| 河东区| 青冈县| 那曲县| 汝南县| 乌兰县| 郸城县| 外汇| 赣榆县| 噶尔县| 和龙市| 灵川县| 柯坪县| 萨迦县| 科技| 屯留县| 宜都市| 浏阳市| 文登市| 获嘉县| 嵊泗县| 繁峙县| 邢台市| 洪湖市| 平安县| 腾冲县| 佛冈县| 额济纳旗| 察雅县| 凤阳县| 屯门区| 岳阳县|