API консоли поиска Google возвращает только 1% от общего числа показов сайта - PullRequest
0 голосов
/ 08 октября 2018

Итак, я работаю над SEO для сайта, который получает около 5 миллионов показов в месяц.Однако запросы к API GSC дают мне очень небольшое подмножество общих показов, обычно порядка 1-2%.Моя строка запроса (код на python):

        request = {
          'startDate': date.strftime("%Y-%m-%d"), #Date
          'endDate': date.strftime("%Y-%m-%d"),
          'dimensions': ['page'],
          'rowLimit': 5000,
          'startRow': row_count, #Starts at 0. Then counts the number of 
rows in the response. If the response has more than 0 rows, the API is invoked again, with row_count equal to the number of rows in the previous response. 
          'aggregationType' :"byPage"
      }

Использование этого дает мне данные примерно на 1-2% от общего впечатления, полученного сайтом, согласно GSC.

Когда я добавляю «запрос» измерения к этому запросу, данные становятся значительно меньше, обычно порядка 0,5% или менее от общего числа показов!

Кроме того, хотя rowLimit установлен на 5k, каждый ответ со страницей и запросом измерения дает мне всего несколько сотен строк данных, что требует от меня зацикливания и отправки большого количества запросов для одной страницы.,Просто чтобы проиллюстрировать, что я имею в виду: за 2018-07-01 было сделано 175 звонков.Первый запрос привел к 446 строкам;восьмое из 400;и от второго до последнего всего за 5.

2018-07-01 00:00:00 Loop  1  row  0
2018-07-01 00:00:00 Loop  2  row  446
2018-07-01 00:00:00 Loop  3  row  850
2018-07-01 00:00:00 Loop  4  row  1234
2018-07-01 00:00:00 Loop  5  row  1612
2018-07-01 00:00:00 Loop  6  row  1986
2018-07-01 00:00:00 Loop  7  row  2361
2018-07-01 00:00:00 Loop  8  row  2736
...
2018-07-01 00:00:00 Loop  173  row  47725
2018-07-01 00:00:00 Loop  174  row  47730
2018-07-01 00:00:00 Loop  175  row  47735

Наконец, данные, которые я получаю с измерением и запросом, составляют не только около 0,5% от общего числа показов, но они также полны дубликатов!Из 47735 строк, которые я получаю за этот день, после удаления дубликатов остается только около 3 тысяч!

Я делаю что-то ужасно неправильно, или этот API полностью сломан?

Весь мой код (исключая часть, которую я использую для подключения к API):

import pandas as pd
import time
col_names = ['keys', 'clicks', 'impressions','ctr','position']
newDF = pd.DataFrame()


for date in date_generated:
    #print(date)
    i = 1
    row_count = 0
    row_remaining = True
    newDF_temp = pd.DataFrame()
    while row_remaining == True: 
        request = {
              'startDate': date.strftime("%Y-%m-%d"),
              'endDate': date.strftime("%Y-%m-%d"),
              'dimensions': ['page','query'],
              'rowLimit': 5000,
              'startRow': row_count,
              'aggregationType' :"byPage"
          }
        #time.sleep(5)
        response = execute_request(webmasters_service, 'https://...', request)
        if 'rows' not in response:
            row_remaining = False
            print("breaking",date)
            break
        if 'rows' in response:
            print(date, "Loop ",i, " row ", row_count)
            i = i+1
        keys,clicks,imp,ctr,pos,dt = [],[],[],[],[],[]
        for result in response['rows']:
            keys.append(result['keys'])
            clicks.append(result['clicks'])
            imp.append(result['impressions'])
            ctr.append(result['ctr'])
            pos.append(result['position'])
            dt.append(date.strftime("%Y-%m-%d"))
        df = pd.DataFrame([keys,clicks,imp,ctr,pos,dt]).T
        row_count = len(df) + row_count
        newDF_temp=newDF_temp.append(df)
    newDF_temp = newDF_temp.iloc[newDF_temp.astype(str).drop_duplicates().index]
    newDF=newDF.append(newDF_temp)
...