利用Python爬取百度指数中需求图谱的关键词

本文介绍如何利用Python爬取百度指数的需求图谱关键词。通过计算日期、设置cookies,利用requests库抓取JSON数据,最后将关键词保存到CSV文件中按月区分。
摘要由CSDN通过智能技术生成


已更新!!!
之前有小伙伴在评论里反应代码有点问题,今天看了下,报错原因是百度指数现在要求必须要登录才能查询,后续有空会更新下代码,把模拟登录加上

需求背景

因为百度指数中需求图谱的关键词只以一周为单位显示,所以为了将更多天数的关键词汇总,写了以下代码帮助大家~

ps:我是工管的,Python是我业余学的,所以代码写的比较丑陋请见谅…


0、获取cookies

1.打开百度指数:百度指数
2.打开检查,如图:
在这里插入图片描述
3.复制cookies的内容 填入代码中 headers

百度指数的params如下所示:

一、使用datetime计算查询的日期

百度指数的params如下所示:

'wordlist[]': '原神',#这里修改关键词
'datelist': str(next_time.strftime('%Y%m%d'))#开始日期

为了计算datelist,所以需要用到datetime库。具体实现代码如下所示:

import datetime
start_time=datetime.date(2020,9,6)#开始爬取日期的上一周
for i in range (10):
    next_time=start_time+datetime.timedelta(7)#+一周
    print(next_time.strftime('%Y%m%d'))
    start_time = next_time

二、爬取需求图谱关键词

它的数据是在XHR里的json格式,所以需要用到request库转换下,具体代码如下所示:

url='http://index.baidu.com/api/WordGraph/multi'
params = {
   
    'wordlist[]': '原神',
    'datelist': str(next_time.strftime
要使用Python爬取百度指数,可以通过以下步骤进行: 1. 安装相关库:需要安装 requests、BeautifulSoup4、pandas 和 xlwt 库。 2. 获取百度指数的cookies:在浏览器上登录百度账号,然后在“开发者工具”查找到“Application”栏下的“Cookies”,找到“BDUSS”和“STOKEN”两个值。 3. 构建请求链接:根据搜索关键词、起始日期和结束日期构建请求链接。请求链接的格式为: http://index.baidu.com/api/SearchApi/index?word={}&startDate={}&endDate={} 4. 发送请求:使用 requests 库发送请求,并将 cookies 和请求头添加到请求。 5. 解析响应:使用 BeautifulSoup4 库解析响应,并将数据保存到 pandas 数据框。 6. 导出数据:使用 xlwt 库将数据导出到 Excel 文件。 以下是示例代码: ```python import requests from bs4 import BeautifulSoup import pandas as pd import xlwt # 百度指数请求链接 url = 'http://index.baidu.com/api/SearchApi/index?word={}&startDate={}&endDate={}' # 搜索关键词 keyword = 'Python' # 起始日期和结束日期 start_date = '20210101' end_date = '20210131' # cookies cookies = { 'BDUSS': 'xxxxx', 'STOKEN': 'xxxxx' } # 请求头 headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.150 Safari/537.36' } # 发送请求 response = requests.get(url.format(keyword, start_date, end_date), cookies=cookies, headers=headers) # 解析响应 soup = BeautifulSoup(response.content, 'lxml') data = soup.find_all('data') # 保存数据到 pandas 数据框 df = pd.DataFrame() for item in data: df = df.append({ 'date': item['x'], 'index': item['y'] }, ignore_index=True) # 导出数据到 Excel 文件 writer = pd.ExcelWriter('baidu_index.xlsx') df.to_excel(writer, index=False) writer.save() ``` 注意:需要替换掉示例代码的 cookies 和搜索关键词。另外,百度指数的请求链接可能会发生变化,需要根据实际情况进行调整。
评论 31
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值