2016-09-23 14 views
2

私はpytrendsを使用して、Googleトレンドからcsvのデータを自動的にダウンロードします。私が使用したコードは以下の通りです。この場合、私は2008年から毎月のGoogleトレンドデータをダウンロードしています。手動でダウンロードしたデータと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) 

pytrendsからの結果と比較して最初の5ヶ月間、Googleのウェブサイトからの結果:

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のサンプリング方法です。毎日、Googleは別のトレンドシリーズを返します。 Googleが各クエリのために毎日10百万のサーバーを持っていると想像してください。したがって、一貫したシリーズを得るためには、30回(または50回)をとり、平均をとることができます。非常に小さい値ではない系列(最小値として30を超える可能性がある)については、標準偏差は約5%(許容可能)である。

マニュアルとgtrendのダウンロードの違いは、それらが同じ抽出データメソッドではないという事実に関連している可能性があります。 gtrendはタイプhttps://www.google.com/trends/fetchContentのURLをダウンロードします...そして、今私はマニュアルダウンロードの処理方法を知っていますが、私はhttps://www.google.com/trends/trendsReport ..のようなデータを抽出する別の方法があることを知っています。後者はすべてのもの(かなりリッチ)のための週刊シリーズを返します。

現在のところ、割り当て制限に問題があるようです。

+0

私は、Seleniumテストフレームワークを使用してこれを行う最も効率的な方法を見つけました。私は仕事を完全に終えていませんが、基本的なアイデアはhttp://www.yseam.com/blog/TR.htmlで見つけることができます。 Googleがページ上の仕様を変更したので、リンクで提供されているコードも少し変更する必要があります。 – DManh