defdecrypt(self, ptbk, index_data): n = len(ptbk) // 2 a = dict(zip(ptbk[:n], ptbk[n:])) return"".join([a[s] for s in index_data])
defget_index_data_json(self, keys, start=None, end=None): words = [[{"name": key, "wordType": 1}] for key in keys] words = str(words).replace(" ", "").replace("'", "\"")
url = f'http://index.baidu.com/api/SearchApi/index?area=0&word={words}&area=0&startDate={start}&endDate={end}' print(words, start, end) res = requests.get(url, headers=self.headers) data = res.json()['data'] uniqid = data['uniqid'] url = f'http://index.baidu.com/Interface/ptbk?uniqid={uniqid}' res = requests.get(url, headers=self.headers)
ptbk = res.json()['data'] result = {} result["startDate"] = start result["endDate"] = end for userIndexe in data['userIndexes']: name = userIndexe['word'][0]['name'] tmp = {} index_all = userIndexe['all']['data'] index_all_data = [int(e) for e in self.decrypt(ptbk, index_all).split(",")] tmp["all"] = index_all_data index_pc = userIndexe['pc']['data'] index_pc_data = [int(e) for e in self.decrypt(ptbk, index_pc).split(",")] tmp["pc"] = index_pc_data index_wise = userIndexe['wise']['data'] index_wise_data = [int(e) for e in self.decrypt(ptbk, index_wise).split(",")] tmp["wise"] = index_wise_data result[name] = tmp return result
defGetIndex(self, keys, start=None, end=None): today = date.today() if start isNone: start = str(today - timedelta(days=8)) if end isNone: end = str(today - timedelta(days=2))