Pytrends - 从 google 趋势数据中获取多个字典列表

Pytrends - get a multiple lists of dicts from google trends data

我想要一个字典列表,如下所示:

[{'produkt': 'slava ukraina', 'kraj': 'Lithuania', 'trendy %': 100}, {'produkt': 'slava ukraina', 'kraj': 'Georgia', 'trendy %': 81}, {'produkt': 'slava ukraina', 'kraj': 'Estonia', 'trendy %': 71}, {'produkt': 'slava ukraina', 'kraj': 'Finland', 'trendy %': 21}, {'produkt': 'slava ukraina', 'kraj': 'Croatia', 'trendy %': 16}, {'produkt': 'slava ukraina', 'kraj': 'Azerbaijan', 'trendy %': 14}, {'produkt': 'slava ukraina', 'kraj': 'Poland', 'trendy %': 12}, {'produkt': 'slava ukraina', 'kraj': 'Norway', 'trendy %': 12}, {'produkt': 'slava ukraina', 'kraj': 'Latvia', 'trendy %': 12}, {'produkt': 'slava ukraina', 'kraj': 'Sweden', 'trendy %': 11}, {'produkt': 'slava ukraina', 'kraj': 'Romania', 'trendy %': 8}, {'produkt': 'slava ukraina', 'kraj': 'Denmark', 'trendy %': 4}, {'produkt': 'slava ukraina', 'kraj': 'Germany', 'trendy %': 3}, {'produkt': 'slava ukraina', 'kraj': 'Austria', 'trendy %': 3}, {'produkt': 'slava ukraina', 'kraj': 'Netherlands', 'trendy %': 3}, {'produkt': 'slava ukraina', 'kraj': 'Portugal', 'trendy %': 3}, {'produkt': 'slava ukraina', 'kraj': 'Switzerland', 'trendy %': 3}, {'produkt': 'slava ukraina', 'kraj': 'United Kingdom', 'trendy %': 2}, {'produkt': 'slava ukraina', 'kraj': 'Canada', 'trendy %': 2}, {'produkt': 'slava ukraina', 'kraj': 'Belgium', 'trendy %': 2}, {'produkt': 'slava ukraina', 'kraj': 'Turkey', 'trendy %': 1}, {'produkt': 'slava ukraina', 'kraj': 'Australia', 'trendy %': 1}, {'produkt': 'slava ukraina', 'kraj': 'Spain', 'trendy %': 1}, {'produkt': 'slava ukraina', 'kraj': 'Italy', 'trendy %': 1}, {'produkt': 'slava ukraina', 'kraj': 'France', 'trendy %': 1}, {'produkt': 'slava ukraina', 'kraj': 'United States', 'trendy %': 1}]
[{'produkt': 'glory to Ukraine', 'kraj': 'Georgia', 'trendy %': 100}, {'produkt': 'glory to Ukraine', 'kraj': 'Lithuania', 'trendy %': 10}, {'produkt': 'glory to Ukraine', 'kraj': 'Canada', 'trendy %': 8}, {'produkt': 'glory to Ukraine', 'kraj': 'Hong Kong', 'trendy %': 7}, {'produkt': 'glory to Ukraine', 'kraj': 'Ireland', 'trendy %': 7}, {'produkt': 'glory to Ukraine', 'kraj': 'United States', 'trendy %': 5}, {'produkt': 'glory to Ukraine', 'kraj': 'United Kingdom', 'trendy %': 5}, {'produkt': 'glory to Ukraine', 'kraj': 'Croatia', 'trendy %': 5}, {'produkt': 'glory to Ukraine', 'kraj': 'Ukraine', 'trendy %': 5}, {'produkt': 'glory to Ukraine', 'kraj': 'Sweden', 'trendy %': 4}, {'produkt': 'glory to Ukraine', 'kraj': 'Finland', 'trendy %': 4}, {'produkt': 'glory to Ukraine', 'kraj': 'New Zealand', 'trendy %': 3}, {'produkt': 'glory to Ukraine', 'kraj': 'Singapore', 'trendy %': 3}, {'produkt': 'glory to Ukraine', 'kraj': 'Portugal', 'trendy %': 3}, {'produkt': 'glory to Ukraine', 'kraj': 'Norway', 'trendy %': 3}, {'produkt': 'glory to Ukraine', 'kraj': 'Czechia', 'trendy %': 3}, {'produkt': 'glory to Ukraine', 'kraj': 'Netherlands', 'trendy %': 2}, {'produkt': 'glory to Ukraine', 'kraj': 'Austria', 'trendy %': 2}, {'produkt': 'glory to Ukraine', 'kraj': 'Switzerland', 'trendy %': 2}, {'produkt': 'glory to Ukraine', 'kraj': 'Denmark', 'trendy %': 2}, {'produkt': 'glory to Ukraine', 'kraj': 'Australia', 'trendy %': 2}, {'produkt': 'glory to Ukraine', 'kraj': 'Germany', 'trendy %': 1}, {'produkt': 'glory to Ukraine', 'kraj': 'South Africa', 'trendy %': 1}, {'produkt': 'glory to Ukraine', 'kraj': 'South Korea', 'trendy %': 1}, {'produkt': 'glory to Ukraine', 'kraj': 'Romania', 'trendy %': 1}, {'produkt': 'glory to Ukraine', 'kraj': 'Italy', 'trendy %': 1}, {'produkt': 'glory to Ukraine', 'kraj': 'Poland', 'trendy %': 1}, {'produkt': 'glory to Ukraine', 'kraj': 'Taiwan', 'trendy %': 1}, {'produkt': 'glory to Ukraine', 'kraj': 'Turkey', 'trendy %': 1}, {'produkt': 'glory to Ukraine', 'kraj': 'Philippines', 'trendy %': 1}, {'produkt': 'glory to Ukraine', 'kraj': 'United Arab Emirates', 'trendy %': 1}, {'produkt': 'glory to Ukraine', 'kraj': 'Belgium', 'trendy %': 1}, {'produkt': 'glory to Ukraine', 'kraj': 'Spain', 'trendy %': 1}]

当我只使用一个参数时,例如'slava ukraina',它工作得很好。下面的示例:

import pandas as pd
from pytrends.request import TrendReq

pytrend = TrendReq()

kw_list = ['slava ukraina']
pytrend.build_payload(kw_list=kw_list,timeframe='now 7-d')
df = pytrend.interest_by_region()
geosy_kw_list = df[df['slava ukraina'] > 0].sort_values('slava ukraina', ascending=False)

df_to_dict = geosy_kw_list.to_dict()

lista = []
for k,v in df_to_dict.items():

    output_list = []
    for c,w in v.items():

        inner_dict = {}
        inner_dict['produkt'] = k
        inner_dict['kraj'] = c
        inner_dict['trendy %'] = w
        output_list.append(inner_dict)

    lista.append(output_list)

list_flattened = [item for sublist in lista for item in sublist]
print(list_flattened)


但是有多个参数我卡住了。

我试过

import pandas as pd
from pytrends.request import TrendReq

def funk_main(*args):
    pytrend = TrendReq()
    for arg in args:        
        pytrend.build_payload(kw_list=arg,timeframe='now 7-d')
        df = pytrend.interest_by_region()
        geosy_kw_list = df[df[arg] > 0].sort_values(arg, ascending=False)
        print(geosy_kw_list)

print(funk_main('slava ukraina','glory to Ukraine'))

但直到最后都没有完成因为

pytrend.build_payload(kw_list=arg,timeframe='now 7-d')

这里报错:

raise exceptions.ResponseError(
pytrends.exceptions.ResponseError: The request failed: Google returned a response with code 400.

好的,我猜不是

kw_list = arg

我应该使用

kw_list = [arg]

就是这样。问题已解决。