需要登录后才可以进行搜索

百度指数信息采集

某个时间点的搜索指数

百度指数信息采集

 拖动上面选择时间范围的功能 查看发出的请求

百度指数信息采集

百度指数信息采集

刷新页面让所有js文件全部加载

其中data可以看到应该是加密了的,all是表示全部数据,pc是指pc端,wise是移动端,这些可以在js文件里找到;首先先搞清楚这个像加密了的data是怎么解密的;我们现在知道这个数据是json格式,那么它处理肯定要从中取出这些data,所以,重新刷新一下网页,目的是为了让所有js都能加载出来,然后利用搜索功能从中找。搜索过程就不上图了,我是搜索 decrypt找到的;首先,我用decrypt找到了一个js文件,其中有一个名为decrypt的方法

这个js文件中有很多decrypt的搜索结果,在不知道多少行处找到了一个名为 fetchTrendIndexLive 的方法,这个方法名用我工地英语翻译为 获取趋势指数
百度指数信息采集

百度指数信息采集

下面调用了decrypt方法

百度指数信息采集

找到decrypt打断点并刷新页面

百度指数信息采集

百度指数信息采集

想要知道这两个参数是什么很简单,回到Network看请求里的json;其中参数e是data,t参数是拿着uniqid请求获得得相应数据,

百度指数信息采集

既然我们找到了加密data得函数,接下来就是解析data数据了

解析数据有两种方法:

1、读js代码通过python代码实现函数功能

2、利用execjs模块直接调用js函数得到我们想要得数据

# -*- coding: utf-8 -*-
# @Time    : 2019/10/11 10:27

# 通过反写js函数解析data参数
def decrypt(t,e):
    n = list(t)
    i = list(e)
    a = {}
    result = []
    ln = int(len(n)/2)
    start = n[ln:]
    end = n[:ln]
    for j,k in zip(start,end):
        a.update({k:j})
    for j in e:
        result.append(a.get(j))
    return ''.join(result)

print(decrypt(",LOZpxFG1THnh0w+.6854310%9-2,7","0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000Gw1H0GZZH0F1GF0FxOx0G1GOh0GxHhG0wpZ10OhHw0p1OH0p1pp0xppH0FhHx0GH110FGOZ0hOFw0hHFF0h1Zp0GFh10GhHw0GG110G1p10HxG0ZFh0GhOO0Gpwx0GhOp0G1ZF0HxG0ZGO0wHF0whZ0wwh0OHF0wpO0OOZ0ppO0OxZ0OGx0w1O0O110O1H0hZpZ0GGhG0Zxp0pZF0pGF0OZH0OGp0whH0Zwx0wFp0OwO0OwF0OGH0OGG0pZH0pwx0pFx0p1O0xwG0xZw0pHF0p1Z0xZG0wZO0Ohp0pwO0OhG0O1p0Ohh0O1G0px10OxF0Op10OHF0pZO0pFZ"))
方式一
// 解析data的js函数

function decrypt(t, e) {
    for (var n = t.split(""), i = e.split(""), a = {}, r = [], o = 0; o < n.length / 2; o++)
        a[n[o]] = n[n.length / 2 + o];
    for (var s = 0; s < e.length; s++)
        r.push(a[i[s]]);
    return r.join("")
}
// t = "ev-fxk9T8V1lwAL6,51348+.9270-%"

// e = "k-kvk--v-flv-fkvke-v-w9vkklv-x1vkw-vkkkvkl-vkeVvk-Vvk-1v9k-v-99v-f9vkk-vkf1vkklvkxVvkwkvkl9vk-9vkVkv-1Vvkxwvkxxvkxwvk11"
方式二 js代码

相关文章: