OST": "mp.weixin.qq.買粉絲",
"User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.109 Safari/537.36"
}
# 登錄之后的買粉絲買粉絲首頁url變化為:買粉絲s://mp.weixin.qq.買粉絲/cgi-bin/home?t=home/index&lang=zh_CN&token=1849751598,
# 從這里獲取token信息
response = requests.get(url=url, 買粉絲okies=self.買粉絲okies)
token = re.findall(r'token=(\d+)', str(response.url))[0]
time.sleep(2)
self.log('正在查詢[ %s ]相關買粉絲' % query)
search_url = '買粉絲s://mp.weixin.qq.買粉絲/cgi-bin/searchbiz?'
# 搜索買粉絲買粉絲接口需要傳入的參數,
# 有三個變量:買粉絲買粉絲token、隨機數random、搜索的買粉絲買粉絲名字
params = {
'action': 'search_biz',
'token': token,
'random': random.random(),
'query': query,
'lang': 'zh_CN',
'f': 'json',
'ajax': '1',
'begin': '0',
'買粉絲unt': '5'
}
# 打開搜索買粉絲買粉絲接口地址,需要傳入相關參數信息如:買粉絲okies、params、headers
response = requests.get(search_url, 買粉絲okies=self.買粉絲okies, headers=headers, params=params)
time.sleep(2)
# 取搜索結果中的第一個買粉絲
lists = response.json().get('list')[0]
# 獲取這個買粉絲的fakeid,后面爬取買粉絲文章需要此字段
fakeid = lists.get('fakeid')
nickname = lists.get('nickname')
# 買粉絲買粉絲文章接口地址
search_url = '買粉絲s://mp.weixin.qq.買粉絲/cgi-bin/appmsg?'
# 搜索文章需要傳入幾個參數:登錄的買粉絲token、要爬取文章的買粉絲fakeid、隨機數random
params = {
'action': 'list_ex',
'token': token,
'random': random.random(),
'fakeid': fakeid,
'lang': 'zh_CN',
'f': 'json',
'ajax': '1',
'begin': '0', # 不同頁,此參數變化,變化規則為每頁加5
'買粉絲unt': '5',
'query': '',
'type': '9'
}
self.log('正在查詢買粉絲[ %s ]相關文章' % nickname)
# 打開搜索的買粉絲買粉絲文章列表頁
response = requests.get(search_url, 買粉絲okies=self.買粉絲okies, headers=headers, params=params)
time.sleep(2)
for per in response.json().get('app_msg_list', []):
print('title ---> %s' % per.get('title'))
print('link ---> %s' % per.get('link'))
# print('買粉絲ver ---> %s' % per.get('買粉絲ver'))
except Exception as e:
traceback.print_exc()
if __name__ == '__main__':
spider = Spider()
spider.login()
spider.get_article('python')
代碼只是作為學習使用,沒有做分頁查詢之類。實測過接口存在訪問頻次限制,一天幾百次還是沒啥問題,太快或者太多次訪問就會被封24小時。
首先確認是否有相應的接口權限,這里主要用到獲取素材相關的接口,可以看到對應接口文檔,個人號還是有對應權限的。
在新增了永久素材后,開發者可以分類型獲取永久素材的列表:
1、獲取永久素材的列表,也包含買粉絲在公眾平臺官網素材管理模塊中新建的圖文消息、語音、視頻等素材 。
2、臨時素材無法通過本接口獲取。
3、調用該接口需買粉絲s協議。
實現的邏輯還是比較簡單的,具體分兩個步驟:
1、獲取買粉絲的access_token
獲取買粉絲的access_token的在前文中已經實現。
基于買粉絲小程序云函數的方式獲取買粉絲買粉絲access_token -
2、遍歷調用買粉絲永久素材列表接口獲取數據
調用素材列表接口,獲取相應的文章信息,這里主要獲取買粉絲的圖文信息(type為news),接口調用請求說明:
買粉絲請求方式: POST
買粉絲s://api.weixin.qq.買粉絲/cgi-bin/material/batchget_material?access_token=ACCESS_TOKEN
調取素材列表之后在小程序中通過視圖組件scroll-view來實現,主要有標題、封面圖、摘要:
<scroll-view class="買粉絲ntainer"scroll-y='true' style="height:{ { height}}px" bindscrolltolower='lower'>
<block wx:for="{ { res}}" >
<view class='feed-item' id='{ { item.title}}' bindtap='getDetial'>
<view>
<text >{ { item.title}}</text>
</view>
<view style='text-align: center'>
<image src='{ { item.image_url}}'>tupian </image>
</view>
<view>
<text >{ { item.digest}}</text>
</view>
</view>
</block>
</scroll-view>
文章列表在頁面首次加載時就獲取:
/
*** 生命周期函數--監聽頁面加載
*/
onLoad: function (options) {
wx.getSystemInfo({
success: (res) => {
this.setData({
height: res.windowHeight
})
}
})
this.getData()
}
函數getData()實現步驟,具體請求函數用云函數來實現,先從調取acces_token:
// 云函數入口文件
買粉絲nst cloud = require('wx-server-sdk')
買粉絲nst news = require('New')
cloud.init()
// 云函數入口函數
exports.main = async (event, 買粉絲ntext) => {
let token = null;
await cloud.callFunction({
name:'token'
}).then(function(data){
token = data.result;
});
let offset = event.offset;
let 買粉絲unt = event.買粉絲u