Google Trends爬虫

最近因科研原因,需要爬取google trends中有关Bitcoin的数据,于是开启了为期三天的艰难探索。过程虽然艰难,但结果是好的。下面将整个过程的收获记录如下。当然,这一切的前提是先连接上一台位于国外的远程服务器,所以假设看到这篇文章的小伙伴都已经连接上了远程服务器。

文章目录

  • Google Trends爬虫
    • 方案一:用本地计算机爬虫(fail)
    • 方案二:用远程服务器爬虫(success)
      • 下载python
      • Google Trends爬虫
        • 安装第三方包
        • 编辑代码
        • 将代码文件导入远程服务器
      • 数据处理

Google Trends爬虫

方案一:用本地计算机爬虫(fail)

当电脑能够正常使用Google后,我首先想到的是像之前爬虫一样,在Pycharm中编辑代码,然后在本地计算机上运行。
但随后就出现了问题。不论是用Pycharm还是Jupyter Notebook,无论如何也无法请求获取Google Trends的页面,总是报错。找了很多帖子,都没有得到解决(如果看到这篇文章的小伙伴能够指导一下,将非常感谢)

在这里插入图片描述
一段时间尝试后,准备另辟蹊径。既然本地计算机上外网的原理是,让能够上外网的远程服务器获取资源,然后再传给本地计算机,我也能远程操控远程服务器,那为什么不直接在远程服务器上爬虫呢,然后就有了方案二。

方案二:用远程服务器爬虫(success)

下载python

CentOS系统是自带Python2的,但是由于现在普遍使用Python3,所以还得自主安装Python3。安装方法参考这篇博文。文章讲的很详细,这里就不再赘述。但是需要补充的一点是,最后在执行创建软链接命令之前,必须先进入根目录。使用“cd …”一直退一直退,直到根目录。然后再运行后面的命令。
进入python3之后,可以用"exit()"命令退出。
但安装好之后有个bug是,每次运行python代码会出现警告,提示缺少某个东西,但我一直安装不上,希望有大佬帮忙解答。

Google Trends爬虫

安装第三方包

Python有个第三方包pytrends,用这个包可以很容易获取Google Trends某个关键词下面的数据。pytrends的详细用法可以去官网查看。
首先安装pytrends。在根目录执行如下命令

pip3 install pytrends

编辑代码

我需要获取2013-2021期间Google Trends中有关Bitcoin的趋势数据。首先在本地计算机上编写好了googleTrends.py文件如下:

import pandas as pd
from pytrends.request import TrendReq

df = pd.DataFrame(columns = ['date','Bitcoin'])
search_list=['Bitcoin']
pytrends = TrendReq()

for y in range(2013,2021):
    yn = str(y + 1)
    y=str(y)
    timeframe='{0}-01-01 {0}-06-30'.format(y) #以半年及以下为周期返回日数据,以上为周数据
    pytrends.build_payload(search_list, timeframe=timeframe)
    df = df.append((pytrends.interest_over_time()).drop(columns='isPartial'))
    timeframe = '{0}-06-30 {1}-01-01'.format(y,yn) 
    pytrends.build_payload(search_list, timeframe=timeframe)
    df = df.append((pytrends.interest_over_time()).drop(columns='isPartial'))

#2021
for m in range(1,3):
    timeframe='2020-12-30 2021-02-22'
    pytrends.build_payload(search_list, timeframe=timeframe)
    df = df.append((pytrends.interest_over_time()).drop(columns='isPartial'))

df.to_excel('googleTrends.xls')

将代码文件导入远程服务器

这里建议使用Xshell作为SSH客户端,因为在Xshell中可以用rz 和 sz命令,轻松和本地计算机实现文件互传。
首先执行安装命令

yum install -y lrzsz

然后在命令行输入rz回车,会出现选择文件的窗口,选择之前编辑好的googleTrends.py文件后,这个文件就保存到远程服务器中了。
然后执行如下命令

python3 googleTrends.py

就成功在远程服务器上运行代码了。运行之后,执行如下命令查看googleTrends.xls的位置。

find / -name googleTrends.xls

会发现该文件在 /root/googleTrends.xls下
接着执行如下命令将文件复制到本地计算机。

sz /root/googleTrends.xls

一番操作之后,Google Trends的数据就保存到本地计算机啦!

数据处理

拿到数据之后并不能直接用。这里得先了解Google Trends数据的特点。
Google Trends的热度值在0-100之间,是一个相对值,和时间段的选择相关。对于同一个日期,比如2021.2.14这天,爬取2021.1.1-2021.2.20时间段和2020.10.14-2020.2.20时间段,得到的2021.2.14这一天的热度值是不同的。
所以,我在爬取数据的时候,在前后两个时间段之间设置了重复天数,比如2013.01.01-2013.06.01 和 2013.06.01-2014.01.01。
这样,就可以以某一时间段为基准,通过比例换算,将所有数据纳入一个标准了。

你可能感兴趣的:(爬虫,python,爬虫,google,python,centos)