首页 > 解决方案 > 使用 pytrend 按国家/地区获取 2019 年的总体趋势

问题描述

我想在 2019 年获得法国的最高图表,但我的代码有一些问题:

!pip install pytrends
import pandas as pd                        
from pytrends.request import TrendReq
import pytrends
pytrend = TrendReq(hl='fr-FR', tz = 360)
df = pytrend.trending_searches(pn='france')
print(df.head())

df = pytrend.top_charts(2019, hl='fr-FR', tz=360, geo='FRANCE')
print(df.head())


IndexError                                Traceback (most recent call last)
<ipython-input-14-87584cc2de91> in <module>()
      7 print(df.head())
      8 
----> 9 df = pytrend.top_charts(2019, hl='fr-FR', tz=360, geo='FRANCE')
     10 print(df.head())

/usr/local/lib/python3.6/dist-packages/pytrends/request.py in top_charts(self, date, hl, tz, geo)
    435             trim_chars=5,
    436             params=chart_payload,
--> 437         )['topCharts'][0]['listItems']
    438         df = pd.DataFrame(req_json)
    439         return df

IndexError: list index out of range

因此,如果有人知道如何通过 python 和 py 趋势获得法国 2019 年的顶级图表

问候

标签: pythonpython-3.xgoogle-trends

解决方案


df = pytrend.top_charts(2019, hl='fr-FR', tz=360, geo='FR')应该修复它

这是top_chart实现,如您所见,geo参数似乎是大写的,显然geofor France 应该是FR

def top_charts(self, date, hl='en-US', tz=300, geo='GLOBAL'):
        """Request data from Google's Top Charts section and return a dataframe"""
        # create the payload
        chart_payload = {'hl': hl, 'tz': tz, 'date': date, 'geo': geo,
                         'isMobile': False}

        # make the request and parse the returned json
        req_json = self._get_data(
            url=TrendReq.TOP_CHARTS_URL,
            method=TrendReq.GET_METHOD,
            trim_chars=5,
            params=chart_payload,
        )['topCharts'][0]['listItems']
        df = pd.DataFrame(req_json)
        return df

推荐阅读