小程序模板網(wǎng)

python實現(xiàn)小程序推送頁面收錄

發(fā)布時間:2020-05-15 10:20 所屬欄目:小程序開發(fā)教程

小程序搜索推送接口: developers.weixin.qq.com/miniprogram…

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

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

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

但是他們都是頁面推送的收錄,我去看了下發(fā)現(xiàn)我們的是一個推送收錄都沒有,然后大概的問了問自己就寫了一份推送收錄的Python腳本。

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

import requests
import math
import time
import json

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

# 設(shè)置配置信息
appid = ""     # 小程序appid
secret = ""    # 小程序secret
sn = 990        # 每次推送數(shù)量
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(",")   # 切割成數(shù)組保存
    idsLen = len(ids)      # 獲取數(shù)組長度
    maxGroup = math.ceil(idsLen / sn)  # 最大的分組數(shù)量
    group_m = -1
    lists = []   # 使用新數(shù)組保存
    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  # 標記當前推送條數(shù)
    for item in lists:
        arrData = []  # 聲明或重置待提交數(shù)組
        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("當前推送第{} - {} 條:成功!最后一條數(shù)據(jù)為:{}".format(signStart, signEnd, arrData[-1]))
        elif onceRes['errcode'] == 47006:
            print("當前推送第{} - {} 條:失??!返回狀態(tài)碼:{},最后一條數(shù)據(jù)為:{}, 當日推送已達到最大上限!".format(signStart, signEnd, onceRes['errcode'], arrData[-1]))
            break
        else:
            print("當前推送第{} - {} 條:失?。》祷貭顟B(tài)碼:{},最后一條數(shù)據(jù)為:{}".format(signStart, signEnd, onceRes['errcode'], arrData[-1]))

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


復制代碼

還有一個參數(shù)文本,由于id過多就將id導入了一個txt,然后讀取之后用","進行了一次分割。

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

如有錯誤或者探討歡迎留言,看到必回。

最后也祝大家的頁面盡早收錄。



易優(yōu)小程序(企業(yè)版)+靈活api+前后代碼開源 碼云倉庫:starfork
本文地址:http://22321a.com/wxmini/doc/course/25183.html 復制鏈接 如需定制請聯(lián)系易優(yōu)客服咨詢:800182392 點擊咨詢
QQ在線咨詢