在線工具:微信文章轉(zhuǎn)PDF
搜狗微信搜索鏈接為臨時鏈接
通過搜狗微信搜索(weixin.sogou.com)搜索出來的文章,在文章底部都是有閱讀數(shù)和點贊數(shù)等數(shù)據(jù)的。其打開文章頁面的鏈接是臨時鏈接,和平時通過微信朋友圈分享的鏈接不一樣,看下面可以看出具體的區(qū)別:
搜狗微信單篇文章鏈接:
http://mp.weixin.qq.com/s?timestamp=1486126386&src=3&ver=1&signature=lnkECanZ6wCApm3BZ2Tsv1D9w5hX9ZYrn3SkBX31HChzFvWju-TpJEcRUyqTG1dg*rJfa8u73L6diEIRbTIBugnWnB8VLBOAc7eJIdUmk2Lxqd*njb24cM4e7OMjX8yN7t8GjyAeH3v6zQzDSWecVU5cRCWaf5DZM9QU49VNt5k=
永久鏈接:
http://mp.weixin.qq.com/s?__biz=MzI4NjQyMTM2Mw==&mid=2247483659&idx=1&sn=0df398158e5ff9a76224309310bae1e1&mpshare=1&scene=1&srcid=0203D18zRj9KotP8Eg6Vbts1#rd
本篇文章所獲取的閱讀量和點贊量等數(shù)據(jù),是基于搜狗微信搜索中的臨時鏈接的,即上面第一種。下面所使用的鏈接,也是上面第一條鏈接。
不出意外的話,您在瀏覽本文時,上面第一條鏈接將會失效,所以您如果需要測試本文提供的方法,請自己通過搜狗微信獲取下任意一篇此時此刻的臨時鏈接。
獲取閱讀量和點贊量的方法
此搜狗微信單篇文章的url里面有兩個參數(shù)是比較重要的,下面方法中會用到:
- timestamp:
1486126386 - signature:
lnkECanZ6wCApm3BZ2Tsv1D9w5hX9ZYrn3SkBX31HChzFvWju-TpJEcRUyqTG1dg*rJfa8u73L6diEIRbTIBugnWnB8VLBOAc7eJIdUmk2Lxqd*njb24cM4e7OMjX8yN7t8GjyAeH3v6zQzDSWecVU5cRCWaf5DZM9QU49VNt5k=
雖然瀏覽器會顯示閱讀數(shù)和點贊數(shù),但通過查看網(wǎng)頁源代碼可知,閱讀量和點贊量這兩個數(shù)據(jù)并不在源代碼之中,即這兩個數(shù)據(jù)是通過JavaScript后期所生成的。所以直接通過Python獲取此網(wǎng)頁源碼,并不會包含閱讀量和點贊量。
幸運的是,有個接口,可以直接獲得閱讀量和點贊量這兩個數(shù)據(jù)。注意下面鏈接中的timestamp和signature參數(shù),即是通過上面臨時鏈接中所提取出來的:
http://mp.weixin.qq.com/mp/getcomment?src=3×tamp=1486126386&ver=1&signature=lnkECanZ6wCApm3BZ2Tsv1D9w5hX9ZYrn3SkBX31HChzFvWju-TpJEcRUyqTG1dg*rJfa8u73L6diEIRbTIBugnWnB8VLBOAc7eJIdUmk2Lxqd*njb24cM4e7OMjX8yN7t8GjyAeH3v6zQzDSWecVU5cRCWaf5DZM9QU49VNt5k=
通過GET方法請求上面鏈接、或直接復(fù)制上面鏈接在瀏覽器中打開,便可返回下面內(nèi)容:
{"base_resp":{"ret":0,"errmsg":"ok"},"comment":[],"elected_comment_total_cnt":0,"read_num":8,"like_num":1}
其中read_num和like_num即我們的目標(biāo),文章此時此刻的閱讀量和點贊量。編碼時,只需通過正則表達(dá)式提取上面的內(nèi)容即可。
思路有了,編碼部分便很簡單了,下面給出最簡單的代碼。
具體獲取閱讀量和點贊量的Python代碼
#coding:utf-8
import requests,re
# 輸入基于搜狗微信的文章臨時鏈接,獲取閱讀數(shù)和點贊數(shù)
def get_c_detail(url):
# 臨時文章鏈接
linshi_link = url.encode('utf-8')
# 正則表達(dá)式,提取timestamp和signature參數(shù)
timestamp = re.findall('timestamp=(\d+)',url)[0]
signature = re.findall('signature=(.+)',url)[0]
# 生成接口鏈接
s = 'http://mp.weixin.qq.com/mp/getcomment?src=3×tamp=%s&ver=1&signature=%s' % (timestamp,signature)
# get方法獲取接口信息
r = requests.get(s)
if r.status_code == 200:
c = r.content
# 正則表達(dá)式,提取閱讀數(shù)和點贊數(shù)
# 閱讀數(shù)
read_num = re.findall('"read_num":(\d+)',c)[-1]
# 點贊數(shù)
like_num = re.findall('"like_num":(\d+)',c)[-1]
return read_num,like_num
url = 'http://mp.weixin.qq.com/s?timestamp=1486126386&src=3&ver=1&signature=lnkECanZ6wCApm3BZ2Tsv1D9w5hX9ZYrn3SkBX31HChzFvWju-TpJEcRUyqTG1dg*rJfa8u73L6diEIRbTIBugnWnB8VLBOAc7eJIdUmk2Lxqd*njb24cM4e7OMjX8yN7t8GjyAeH3v6zQzDSWecVU5cRCWaf5DZM9QU49VNt5k='
print get_c_detail(url)