1. 程式人生 > 程式設計 >python實現小程式推送頁面收錄指令碼

python實現小程式推送頁面收錄指令碼

小程式搜尋推送介面: developers.weixin.qq.com/miniprogram…

小程式獲取assess_token:developers.weixin.qq.com/miniprogram…

當時看到小程式頁面收錄的時候也是很恍然,一直都沒有怎麼注意到這個東西,直到加了微信小程式社群的官方群才看到有人提及這個東西,索性點進去看了一下,發現收錄頁面達到了17萬,應該不算太多,屬於爬蟲自然收錄。

也有過人問過我怎麼做收錄的,真的,就是自然收錄,無非是詳情頁比較重要而已,因為引數的不同收錄肯定會增多很多,前提是不要隨意的攔截使用者登入。當然也和朋友交流過這方面的東西,後面發現收錄是週期性的,大概是間隔7天左右會有一次上漲,所以過了幾天之後漲了4萬達到了21萬。

但是他們都是頁面推送的收錄,我去看了下發現我們的是一個推送收錄都沒有,然後大概的問了問自己就寫了一份推送收錄的Python指令碼。

廢話過多直接上程式碼吧,如有不足之處還望指教。

import requests
import math
import time
import json

"""
@author: axin
@time:2019/12/14 14:30
@File: smpush.py
"""

# 設定配置資訊
appid = ""  # 小程式appid
secret = "" # 小程式secret
sn = 990  # 每次推送數量
timer = 5  # 每次睡眠時間


# 獲取小程式assess_token
tokenUrl = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid={}&secret={}".format(appid,secret)
tokenReq = requests.get(tokenUrl)
tokenResp = tokenReq.json()
token = tokenResp['access_token']

# 拼接推送連結
url = "https://api.weixin.qq.com/wxa/search/wxaapi_submitpages?access_token={}".format(token)

# 獲取小程式招工推送列表
postData = {
 "access_token": token,"pages": []
}

#讀取所有待推送資訊
with open('ids.txt','r') as f:
 ids = f.read()
 ids = ids.split(",") # 切割成陣列儲存
 idsLen = len(ids)  # 獲取陣列長度
 maxGroup = math.ceil(idsLen / sn) # 最大的分組數量
 group_m = -1
 lists = [] # 使用新陣列儲存
 for i in range(idsLen):
  if i % sn == 0:
   group_m += 1
   lists.append([ids[i]])
  else:
   lists[group_m].append(ids[i])


 #分組推送
 sign = 0 # 標記當前推送條數
 for item in lists:
  arrData = [] # 宣告或重置待提交陣列
  for i in item:
   data = {
    "path": "pages/detail/info/info","query": "id=" + i
   }
   arrData.append(data)

  postData['pages'] = arrData
  onceReq = requests.post(url,json.dumps(postData))
  onceRes = onceReq.json()
  signStart = sign * sn
  signEnd = (sign * sn) + sn
  if onceRes['errcode'] == 0:
   print("當前推送第{} - {} 條:成功!最後一條資料為:{}".format(signStart,signEnd,arrData[-1]))
  elif onceRes['errcode'] == 47006:
   print("當前推送第{} - {} 條:失敗!返回狀態碼:{},最後一條資料為:{},當日推送已達到最大上限!".format(signStart,onceRes['errcode'],arrData[-1]))
   break
  else:
   print("當前推送第{} - {} 條:失敗!返回狀態碼:{},最後一條資料為:{}".format(signStart,arrData[-1]))

  sign += 1
  time.sleep(timer) # 設定睡眠時間

還有一個引數文字,由於id過多就將id匯入了一個txt,然後讀取之後用","進行了一次分割。

python實現小程式推送頁面收錄指令碼

感謝@克隆:sheep:多利建議改了Python的format以及下掉eval

python實現小程式推送頁面收錄指令碼

到此這篇關於python實現小程式推送頁面收錄指令碼的文章就介紹到這了,更多相關python推送收錄內容請搜尋我們以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援我們!