最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python百度指數(shù)獲取腳本下載并保存

 更新時(shí)間:2022年06月09日 09:14:56   作者:? 北江愛國?  ?  
這篇文章主要介紹了Python百度指數(shù)獲取腳本下載并保存,基于原有的可以對百度指數(shù)進(jìn)行爬蟲的腳本做一個(gè)可直接返回pd.DataFrame的數(shù)據(jù)框的類加上可視化代碼完成,需要的朋友可以參考一下

前言

有時(shí)候大家需要知道一個(gè)關(guān)鍵詞在互聯(lián)網(wǎng)上的熱度,想知道某個(gè)關(guān)鍵詞的熱度變化趨勢。大家可能就是使用百度指數(shù)、微信指數(shù)之類的。非常好用,但是就是不能把數(shù)據(jù)下載保存下來,不方便我們后面進(jìn)行操作。

我無意間看到別人提供的python腳本,可以對百度指數(shù)進(jìn)行爬蟲,于是我稍微修改了部分代碼,做了一個(gè)可以直接返回pd.DataFrame的數(shù)據(jù)框的類;然后后面又加了一個(gè)小的可視化代碼。這里和大家分享,只要使用這個(gè)腳本,就可以將百度指數(shù)數(shù)據(jù)下載下來,并且保存。

具體步驟

1. 獲得cookie值

百度指數(shù)是需要登陸,進(jìn)行用戶驗(yàn)證,因此,我們要登陸百度指數(shù),然后隨便搜索一個(gè)關(guān)鍵詞,比如python。然后在網(wǎng)頁空白地方,右鍵打開【檢查】,然后進(jìn)入【網(wǎng)絡(luò)】

這個(gè)時(shí)候會發(fā)現(xiàn)【網(wǎng)絡(luò)】里面都是空的,需要重新刷新網(wǎng)頁即可看到所有內(nèi)容。內(nèi)容太多了,注意選擇【Fetch/XHR】.

然后找到index?開頭的文件,查看他的【標(biāo)頭】、查看他的【Cookie】.將這個(gè)cookie的值復(fù)制

2. 使用我的代碼

基礎(chǔ)代碼,只要復(fù)制好就行:

import?requests
import?json
from?datetime?import?date,?timedelta
import?pandas?as?pd
class?DownloadBaiDuIndex(object):
????def?__init__(self,?cookie):
????????self.cookie?=?cookie
????????self.headers?=?{
????????????"Connection":?"keep-alive",
????????????"Accept":?"application/json,?text/plain,?*/*",
????????????"User-Agent":?"Mozilla/5.0?(Windows?NT?10.0;?WOW64)?AppleWebKit/537.36?(KHTML,?like?Gecko)?Chrome/86.0.4240.198?Safari/537.36",
????????????"Sec-Fetch-Site":?"same-origin",
????????????"Sec-Fetch-Mode":?"cors",
????????????"Sec-Fetch-Dest":?"empty",
????????????"Referer":?"https://index.baidu.com/v2/main/index.html",
????????????"Accept-Language":?"zh-CN,zh;q=0.9",
????????????'Cookie':?self.cookie,
????????}

????def?decrypt(self,?ptbk,?index_data):
????????n?=?len(ptbk)?//?2
????????a?=?dict(zip(ptbk[:n],?ptbk[n:]))
????????return?"".join([a[s]?for?s?in?index_data])

????def?get_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

????def?GetIndex(self,?keys,?start=None,?end=None):
????????today?=?date.today()
????????if?start?is?None:
????????????start?=?str(today?-?timedelta(days=8))
????????if?end?is?None:
????????????end?=?str(today?-?timedelta(days=2))

????????try:
????????????raw_data?=?self.get_index_data_json(keys=keys,?start=start,?end=end)
????????????raw_data?=?pd.DataFrame(raw_data[keys[0]])
????????????raw_data.index?=?pd.date_range(start=start,?end=end)

????????except?Exception?as?e:
????????????print(e)
????????????raw_data?=?pd.DataFrame({'all':?[],?'pc':?[],?'wise':?[]})

????????finally:
????????????return?raw_data

使用上面的類:

使用上面的類,然后使用下面的代碼。先初始化類,然后在使用這個(gè)對象的GetIndex函數(shù),里面的參數(shù)keys就是傳遞一個(gè)關(guān)鍵詞就行,要用列表形式傳遞。

說更加簡單一點(diǎn)的,只要把python替換成別的關(guān)鍵詞就行了,然后時(shí)間也都是文本形式,樣式就是'yyyy-mm-dd'形式就行。

cookie?=?'你的cookie值,注意使用英文單引號;就是直接復(fù)制就行了'
#?初始化一個(gè)類
downloadbaiduindex?=?DownloadBaiDuIndex(cookie=cookie)
data?=?downloadbaiduindex.GetIndex(keys=['python'],?start='2021-01-01',?end='2021-11-12')
data

保存數(shù)據(jù)

如果想保存數(shù)據(jù),直接可以這么寫:

data.to_csv('data.csv')

可視化

獲得數(shù)據(jù)已經(jīng)很簡單了,接下來可視化,就是非常簡單的事情了,你用別的語言處理數(shù)據(jù)也都可以了。我這里簡單的畫一個(gè)時(shí)間序列圖:

import?plotly.graph_objects?as?go
import?pandas?as?pd
df?=?data
fig?=?go.Figure([go.Scatter(x=df.index,?y=df['all'],?fill='tozeroy')])
fig.update_layout(template='plotly_white',?title='python?百度指數(shù)')
fig.show()
fig.write_html('python.html')

結(jié)果如下:

總結(jié)

上面基本上沒有任何難點(diǎn)了,只要沒把cookie復(fù)制錯(cuò),只要沒有把上面的參數(shù)寫錯(cuò)就行。

到此這篇關(guān)于Python百度指數(shù)獲取腳本下載并保存的文章就介紹到這了,更多相關(guān)Python獲取腳本內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python 文件重命名工具代碼

    Python 文件重命名工具代碼

    Python 文件重命名工具實(shí)現(xiàn)代碼。
    2009-07-07
  • 解讀Numpy中的排序(sort,argsort)

    解讀Numpy中的排序(sort,argsort)

    這篇文章主要介紹了關(guān)于Numpy中的排序(sort,argsort),具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-06-06
  • Pandas讀取行列數(shù)據(jù)最全方法

    Pandas讀取行列數(shù)據(jù)最全方法

    本文主要介紹了Pandas讀取行列數(shù)據(jù)最全方法,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-08-08
  • python多進(jìn)程控制學(xué)習(xí)小結(jié)

    python多進(jìn)程控制學(xué)習(xí)小結(jié)

    這篇文章主要介紹了python多進(jìn)程控制學(xué)習(xí)小結(jié),想要充分利用多核CPU資源,Python中大部分情況下都需要使用多進(jìn)程,Python中提供了multiprocessing這個(gè)包實(shí)現(xiàn)多進(jìn)程。感興趣的小伙伴們可以參考一下
    2018-10-10
  • python識別圍棋定位棋盤位置

    python識別圍棋定位棋盤位置

    最近需要做一個(gè)圍棋識別的項(xiàng)目,本文就介紹了棋盤位置定位,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-07-07
  • Pandas?Groupby之在Python中匯總、聚合和分組數(shù)據(jù)的示例詳解

    Pandas?Groupby之在Python中匯總、聚合和分組數(shù)據(jù)的示例詳解

    GroupBy是一個(gè)非常簡單的概念,我們可以創(chuàng)建一個(gè)類別分組,并對這些類別應(yīng)用一個(gè)函數(shù),本文給大家介紹Pandas?Groupby之如何在Python中匯總、聚合和分組數(shù)據(jù),感興趣的朋友跟隨小編一起看看吧
    2023-07-07
  • Python學(xué)習(xí)之函數(shù)的定義與使用詳解

    Python學(xué)習(xí)之函數(shù)的定義與使用詳解

    函數(shù)是具有某種特定功能的代碼塊,可以重復(fù)使用(在前面數(shù)據(jù)類型相關(guān)章節(jié)。它使得我們的程序更加模塊化,不需要編寫大量重復(fù)的代碼。本文將詳細(xì)介紹Python中函數(shù)的定義與使用,感興趣的可以學(xué)習(xí)一下
    2022-03-03
  • Python 12306搶火車票腳本 Python京東搶手機(jī)腳本

    Python 12306搶火車票腳本 Python京東搶手機(jī)腳本

    這篇文章主要為大家詳細(xì)介紹了Python 12306搶火車票腳本和Python京東搶手機(jī)腳本,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-02-02
  • Python OpenCV 圖像區(qū)域輪廓標(biāo)記(框選各種小紙條)

    Python OpenCV 圖像區(qū)域輪廓標(biāo)記(框選各種小紙條)

    這篇文章主要介紹了Python OpenCV 圖像區(qū)域輪廓標(biāo)記(框選各種小紙條),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03
  • PyTorch使用torch.nn.Module模塊自定義模型結(jié)構(gòu)方式

    PyTorch使用torch.nn.Module模塊自定義模型結(jié)構(gòu)方式

    這篇文章主要介紹了PyTorch使用torch.nn.Module模塊自定義模型結(jié)構(gòu)方式,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-02-02

最新評論

平潭县| 武义县| 法库县| 罗江县| 九寨沟县| 盐亭县| 安塞县| 彝良县| 黄骅市| 临夏县| 秦安县| 庆阳市| 内黄县| 手游| 枣庄市| 乌兰浩特市| 乐昌市| 乐平市| 龙泉市| 旬邑县| 武山县| 宜兴市| 湟中县| 建瓯市| 名山县| 舞钢市| 清水县| 阿尔山市| 昌吉市| 长葛市| 乡宁县| 尉氏县| 深水埗区| 黔江区| 五原县| 东阳市| 邵阳县| 乌兰县| 岱山县| 响水县| 定陶县|