2016-09-23 81 views
2

我使用pytrends自动从google趋势下载csv中的数据。我使用的代码如下。在这种情况下,我正在下载每月谷歌趋势数据从2008年到现在。Pytrends趋势结果与手动下载数据不相似

from pytrends.request import TrendReq 
from urllib.parse import unquote 
from dateutil.relativedelta import relativedelta 
import datetime 
import pytrends 

google_username = "[email protected]" 
google_password = "xxxxx" 

search_term = unquote('%2Fm%2F07gyp7') 
google_trend = TrendReq(google_username, google_password, custom_useragent='Pytrends' ) 
google_trend_payload = {'gprop' : 'news' , 'q': search_term} 
trendresult = TrendReq.trend(google_trend_payload, return_type = 'dataframe') 
print(trendresult) 

从谷歌网站前5个月,结果从pytrends结果相比:

Date   Pytrends data   Manual csv data 
2008-01  21.0     28.0 
2008-02  16.0     19.0 
2008-03  16.0     21.0 
2008-04  15.0     18.0 
2008-05  22.0     31.0 

任何人都知道的原因是什么?谢谢。

回答

2

我有同样的问题,所以我不得不在我的项目中手动下载。现在,我已经意识到了原因。这是谷歌的抽样方法。 Google每天都会返回不同的趋势系列。想象一下,谷歌每天有10万台服务器,每个查询只能抽取10k台服务器。因此,为了获得一致的系列,您可以花费30(甚至50)次并取平均值。对于数值不太小(可能超过30)的系列,标准偏差约为5%(可接受)。

手动和gtrend下载之间的区别可能与它们与提取数据方法不同。该gtrend下载类型https://www.google.com/trends/fetchContent ....类型的网址。我现在知道如何处理手动下载,但我知道有另一种方式来提取数据,如https://www.google.com/trends/trendsReport ..。后者返回每周系列的所有内容(非常丰富)。

目前,似乎有配额限制问题。

+0

我已经找到了使用Selenium测试框架完成此操作的最有效方法。我还没有完成这项工作,但基本思想可以在这里找到http://www.yseam.com/blog/TR.html。由于google改变了页面上的规范,我们还需要更改链接中提供的一些代码。 – DManh