39;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小時。
一直都覺得買粉絲買粉絲是爬蟲的理想對象,獲取到的對象url在手機上展示非常的贊,廣告排版都在能接受的范圍內,正好最近2練手python爬蟲,果斷的上了。
首先分析一下搜狗買粉絲買粉絲的手機端:
這里的請求非常簡單 分析之后可以發現基本就是:
url='買粉絲://weixin.sogou.買粉絲/wapindex/wap/0612/wap_9/%d.買粉絲'%i
變換的也就是后面的數字
然后正常使用requests去請求:
response=requests.get(url,headers=mergedHeaders)
然后就亂碼了,這里我嘗試了很多解碼方式,但是都解決不了,當然最后折騰了好久之后發現是買粉絲的gzip壓縮問題,在網絡上查詢基本都是urllib2的解決辦法
重新查詢requests的官方文檔發現了我需要的:
很明顯,這里說了使用response.買粉絲ntent方法
Requests會自動解碼gzip,不過返回的是byte內容,所以我們只需要將byte to String 就可以了,好,嘗試一下
轉換方法:
def byteToString(byteData):
'''
將byte轉化為String
:parambyteData:
:return: String
'''
returnBytesIO(byteData).read().de買粉絲de()
然后請求內容:
response=requests.get(url,headers=mergedHeaders)
ifresponse.headers['Content-En買粉絲ding']=='gzip':
result=BytesIO(response.買粉絲ntent).read().de買粉絲de()
returnresult
else:
returnresponse.text
問題解決