利用python爬取谷歌趋势某个关键词的每日搜索次数

      大家好,我是带我去滑雪!本期尝试利用python爬取谷歌趋势某个关键词的每日搜索次数。

目录

1、什么是谷歌趋势?

2、爬取谷歌趋势的搜索次数有何用?

3、代码如何实现?

(1)导入相关模块

(2)解析页面结构

(3)循环爬取

(4)调用函数并初始化

(5)部分结果展示


1、什么是谷歌趋势?

     谷歌趋势(Google Trends)是由谷歌提供的一个免费的在线工具,它可以显示特定关键词或主题在一段时间内的搜索兴趣变化趋势。谷歌趋势可以帮助用户了解全球范围内或特定地区的搜索热度,以及相关的搜索查询和趋势。下面是谷歌趋势的一些主要功能和特点:

  1. 搜索兴趣趋势:谷歌趋势可以显示特定关键词或主题在一段时间内的搜索兴趣变化趋势。用户可以通过输入关键词或主题,查看其搜索频率随时间的变化趋势。结果以图表形式展示,用户可以选择不同的地区和时间范围进行比较和分析。

  2. 相关查询和主题:谷歌趋势还提供了与搜索关键词或主题相关的查询和主题建议。这些相关查询和主题可以帮助用户了解与关键词相关的其他搜索查询和话题,从而更全面地了解用户的兴趣和需求。

  3. 地域和语言分布:谷歌趋势可以显示特定关键词或主题的搜索热度在不同地区和语言上的分布情况。用户可以选择特定的国家、地区或语言,以获得相关搜索兴趣的地域分布信息。这对于市场调研、媒体策划和地区关注度分析非常有用。

  4. 热门搜索:谷歌趋势提供了热门搜索功能,显示当前热门的搜索关键词或主题。这可以让用户了解当前社会热点、事件或话题的搜索趋势和兴趣。

2、爬取谷歌趋势的搜索次数有何用?

爬取谷歌趋势中某个关键词的搜索次数可以具有以下用途:

  1. 市场调研:了解特定关键词的搜索次数可以提供对市场需求和用户兴趣的洞察。通过分析搜索次数的趋势和变化,可以评估某个产品、服务或行业的受欢迎程度和潜在市场规模。这对于制定营销策略、产品定位和市场竞争分析非常有用。

  2. SEO优化:搜索引擎优化(SEO)是提高网站在搜索引擎结果页上排名的过程。了解特定关键词的搜索次数可以帮助网站拥有者确定哪些关键词受到用户关注,并针对这些热门关键词进行内容优化。通过优化网站内容和关键词的选择,可以增加网站的曝光度和流量。

  3. 广告投放:知道特定关键词的搜索次数可以帮助广告主确定广告投放的目标受众和市场规模。根据关键词的搜索次数,可以优化广告投放的定位和策略,以提高广告的点击率和转化率。

  4. 舆情监测:特定关键词的搜索次数可以反映当前的热点事件、话题或社会关注度。通过监测关键词的搜索次数和变化,可以及时掌握公众舆论的走向和用户兴趣的变化。这对于品牌管理、危机公关和舆情分析非常有帮助。

3、代码如何实现?

(1)导入相关模块

from datetime import date, timedelta
from functools import partial
from time import sleep
from calendar import monthrange

import pandas as pd

from pytrends.exceptions import ResponseError
from pytrends.request import TrendReq

(2)解析页面结构

def get_last_date_of_month(year: int, month: int) -> date:

    return date(year, month, monthrange(year, month)[1])


def convert_dates_to_timeframe(start: date, stop: date) -> str:

    return f"{start.strftime('%Y-%m-%d')} {stop.strftime('%Y-%m-%d')}"


def _fetch_data(pytrends, build_payload, timeframe: str) -> pd.DataFrame:
    attempts, fetched = 0, False
    while not fetched:
        try:
            build_payload(timeframe=timeframe)
        except ResponseError as err:
            print(err)
            print(f'Trying again in {60 + 5 * attempts} seconds.')
            sleep(60 + 5 * attempts)
            attempts += 1
            if attempts > 3:
                print('Failed after 3 attemps, abort fetching.')
                break
        else:
            fetched = True
    return pytrends.interest_over_time()


def get_daily_data(word: str,
                 start_year: int,
                 start_mon: int,
                 stop_year: int,
                 stop_mon: int,
                 geo: str = '',
                 verbose: bool = True,
                 wait_time: float = 5.0) -> pd.DataFrame:

    start_date = date(start_year, start_mon, 1) 
    stop_date = get_last_date_of_month(stop_year, stop_mon)

    pytrends = TrendReq(hl='zh-CN', tz=360)
    build_payload = partial(pytrends.build_payload,
                            kw_list=[word], cat=0, geo=geo, gprop='')

    monthly = _fetch_data(pytrends, build_payload,
                         convert_dates_to_timeframe(start_date, stop_date))
 

(3)循环爬取

    results = {}
    current = start_date
    while current < stop_date:
        last_date_of_month = get_last_date_of_month(current.year, current.month)
        timeframe = convert_dates_to_timeframe(current, last_date_of_month)
        if verbose:
            print(f'{word}:{timeframe}')
        results[current] = _fetch_data(pytrends, build_payload, timeframe)
        current = last_date_of_month + timedelta(days=1)
        sleep(wait_time)  

    daily = pd.concat(results.values()).drop(columns=['isPartial'])
    complete = daily.join(monthly, lsuffix='_unscaled', rsuffix='_monthly')
 

(4)调用函数并初始化

start_year = 2022
start_month = 1
stop_year = 2022
stop_month = 3
keyword = "warming"
data = get_daily_data(keyword, start_year, start_month, stop_year, stop_month)
data.to_excel(r"E:\工作\硕士\博客\二次数据\数据64.xlsx")

(5)部分结果展示

date搜索次数Climate change_monthlyisPartialscaleClimate change
2017/1/11313FALSE0.131.69
2017/1/21717FALSE0.172.89
2017/1/31919FALSE0.193.61
2017/1/42222FALSE0.224.84
2017/1/52424FALSE0.245.76
2017/1/62626FALSE0.266.76
2017/1/71818FALSE0.183.24
2017/1/81717FALSE0.172.89
2017/1/92828FALSE0.287.84
2017/1/102727FALSE0.277.29
2017/1/113636FALSE0.3612.96
2017/1/123535FALSE0.3512.25
2017/1/132727FALSE0.277.29
2017/1/141818FALSE0.183.24

 

需要数据集的家人们可以去百度网盘(永久有效)获取:

链接:https://pan.baidu.com/s/1E59qYZuGhwlrx6gn4JJZTg?pwd=2138
提取码:2138 


更多优质内容持续发布中,请移步主页查看。

有任何问题,欢迎私信博主!

   点赞+关注,下次不迷路!

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/61684.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java实现根据关键词搜索京东商品列表数据方法,当当API接口(jd.item_search)申请指南

要通过京东网的API获取商品列表数据&#xff0c;您可以使用京东开放平台提供的接口来实现。以下是一种使用Java编程语言实现的示例&#xff0c;展示如何通过京东开放平台API获取商品列表&#xff1a; 首先&#xff0c;确保您已注册成为当当开放平台的开发者&#xff0c;并创建…

Windows安装单节点Zookeeper

刚学习Dubbo&#xff0c;在Centos7中docker安装的zookeeper3.7.1。然后在启动provider时一直报错&#xff0c;用尽办法也没有解决。然后zookeeper相关的知识虽然以前学习过&#xff0c;但是已经忘记的差不多了。现在学习dubbo只能先降低版本使用了&#xff0c;之后再复习zookee…

spring cloud新版本使用loadbalancer替代Ribbon

Nacos 2021 不再集成 Ribbon&#xff0c;建议使用spring cloud loadbalancer 引入 一、简单使用 引入依赖spring cloud loadbalancer <dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-loadbalancer<…

数据库锁简析

数据库大并发操作要考虑死锁和锁的性能问题。用T1代表一个数据库执行请求&#xff0c;T2代表另一个请求&#xff0c;也可以理解为T1为一个线程&#xff0c;T2 为另一个线程。T3,T4以此类推。下面以SQL Server为例。 锁的种类 共享锁(Shared lock) 例1&#xff1a;T1: select…

Golang数据结构和算法

Golang数据结构和算法 数据的逻辑结构和物理结构常见数据结构及其特点算法的时间复杂度和空间复杂度Golang冒泡排序Golang选择排序Golang插入排序Golang快速排序Golang归并排序Golang二分查找Golang sort包Golang链表Golang container/list标准库Golang栈stackGolang二叉搜索树…

解决css样式中last-child不生效的问题

需求 项目中需要使用v-for指令来渲染一个图片列表&#xff0c; 现状 发现&#xff0c;最后一个格子并没有跟下面绿色线对齐。 最后发现 是因为 每个格子都给了 margin-right&#xff1a;36px&#xff0c;影响到了最后一个格子 所以使用last-child 将最后一个格子的margin 属性…

ARM DIY(六)音频调试

前言 今天&#xff0c;调试一下音频 硬件焊接 硬件部分核心是 LM4871 音频功放芯片 对于 SOC 来讲很简单&#xff0c;就一个引脚 HPOUTL&#xff08;单声道&#xff09;&#xff1b;对于扬声器来讲也很简单&#xff0c;就两个引脚&#xff0c;插上就可以了。 另外一个关键点…

FastDFS+Nginx - 本地搭建文件服务器同时实现在外远程访问「端口映射」

文章目录 前言1. 本地搭建FastDFS文件系统1.1 环境安装1.2 安装libfastcommon1.3 安装FastDFS1.4 配置Tracker1.5 配置Storage1.6 测试上传下载1.7 与Nginx整合1.8 安装Nginx1.9 配置Nginx 2. 局域网测试访问FastDFS3. 安装cpolar内网穿透4. 配置公网访问地址5. 固定公网地址5.…

vue3中如何使用el-tooltip中的插槽达到换行效果

el-tooltip的content属性中的内容可以使用插槽来替换 话不多说&#xff0c;直接上代码 <el-tooltip effect"light" placement"top-start"><div slot"content" class"tips"> // 在这里运用插槽<p class"tip-tex…

数据结构--5.1图的存储结构(十字链表、邻接多重表、边集数组)

目录 一、十字链表&#xff08;Orthogonal List&#xff09; 二、邻接多重表 三、边集数组 四、深度优先遍历 一、十字链表&#xff08;Orthogonal List&#xff09; 重新定义顶点表结点结构&#xff1a; datafirstInfirstOut 重新定义边表结构结点&#xff1a; tailV…

js 将形如 ‘Aug 30 2022‘ 格式的日期转化为 ‘%Y-%m-%d‘ 的格式。

可以使用JavaScript中的Date对象和相关方法来完成此任务。具体实现如下&#xff1a; // 定义需要转换的日期字符串 const dateStr Aug 30 2022;// 将日期字符串转换为Date对象 const date new Date(dateStr);// 使用Date对象的getDate、getMonth、getFullYear方法获取年月日…

OS 死锁处理

如果P先申请mutex 则mutex从1置零&#xff0c;假设申请到的empty 0则empty变成-1阻塞态 同理C中mutex从0变为-1&#xff0c;那么如果想离开阻塞态&#xff0c;那么就需要执行V&#xff08;empty&#xff09;但是如果执行V&#xff08;empty&#xff09;就需要P&#xff08;mu…

7.react useReducer使用与常见问题

useReducer函数 1. useState的替代方案.接收一个(state, action)>newState的reducer, 并返回当前的state以及与其配套的dispatch方法2. 在某些场景下,useReducer会比useState更加适用,例如state逻辑较为复杂, 且**包含多个子值**,或者下一个state依赖于之前的state等清楚us…

后端给前端传参数忽略空属性

JsonInclude JsonInclude注解用于指定在对象序列化为JSON字符串时&#xff0c;哪些属性应该被包含进去&#xff0c;哪些属性应该被忽略掉。 JsonInclude注解有以下几个常用选项&#xff1a; JsonInclude(JsonInclude.Include.NON_NULL)&#xff1a;表示只有属性值不为null的属…

stm32之25.FLASH闪存

打开标准库 源码--- int main(void) {uint32_t d;Led_init();key_init();/* 初始化串口1波特率为115200bps&#xff0c;若发送/接收数据有乱码&#xff0c;请检查PLL */usart1_init(115200);printf("this is flash test\r\n");/* 解锁FLASH&#xff08;闪存&#xf…

GPT 系列笔记

open ai 出品, 与 google 的 bert 系列 是不同的任务, NLGeneration vs. NLUnderstanding. 二. GPT-2 hugging-face 的 transformers 库中有模型源码, 为 from transformers.models.gpt2 import GPT2Model. 成员字段 wte, Word Token Embwpe, Word Position Embh, 模型主体…

运维数据(2):全新解说运维的价值和场景

在一个项目中&#xff0c;得知客户高层一直在纠结运维的价值&#xff0c;质疑运维投入的合理性和必要性&#xff0c;要求澄清其具体价值及其与业务的关系。同时&#xff0c;当今IT界流行“场景”一词&#xff0c;不论是解决方案&#xff0c;还是具体产品都在拉关系&#xff0c;…

亚马逊云科技 re:Inforce 大会云安全合规与技术实践及 Security Jam 大赛,快来报名吧!...

‍‍ 2023年8月31日在北京 亚马逊云科技 re:Inforce 大会 首次登陆中国&#xff01; 我们期待您的莅临&#xff0c; 并与您一起迎接 AI 时代&#xff0c; 开启全面智能的安全旅程&#xff01; 在13:00-17:00的 培训与动手实验环节中 云安全合规与技术实践 及 Security Jam 大赛…

Ansible学习笔记14

实现多台的分离实现&#xff1a; [rootlocalhost playbook]# cat example3.yaml --- - hosts: 192.168.17.105remote_user: roottasks:- name: create test1 directoryfile: path/test1/ statedirectory- hosts: 192.168.17.106remote_user: roottasks:- name: create test2 d…

Jenkins测试报告样式优化

方式一&#xff1a;修改Content Security Policy&#xff08;临时解决&#xff0c;Jenkins重启后失效) 1、jenkins首页—>ManageJenkins—>Tools and Actions标题下—>Script Console 2、粘贴脚本输入框中&#xff1a;System.setProperty("hudson.model.Directo…