Улучшение [1.2.404] SE::Google::Suggest не оттуда парсит подсказки

DeLaKroiX

A-Parser Enterprise License
A-Parser Enterprise
я тут внезапно одну штуку заметил. мне кажется SE::Google::Suggest не оттуда парсит подсказки, поэтому получаются странные результаты, которые зачастую вообще не имеют отношения к реальности. вот сравните эти два линка. апарсер парсит первый линк:
https://www.google.com/complete/sea...=psy-ab&xssi=t&gs_ri=gws-wiz&hl=en&authuser=0
http://suggestqueries.google.com/co...me&hl=en&gl=us&callback=?&q=slot real money x
тоесть во втором линке нет подсказок, но есть одно но. по первому линку приходят подсказки, которые дополняют введённый кей фактически рандомным словом, тогда как по второму приходят только подходящие кеи, и если их нет - гугл не будет изворачиваться и пытаться предложить что-то непонятное, а просто скажет что кеев нет. чтобы было нагляднее - при вводе этого запроса мы получим вот такую часть подсказки http://dl4.joxi.net/drive/2019/01/24/0020/3690/1338986/86/be82a668b3.png которая собственно и распознаётся апарсером, как кейворд из подсказки, хотя фактически он является мусорным и выдаётся гуглом, можно сказать, от безысходности )) а вот когда у гугла действительно есть кеи для подсказок - тогда результаты по линкам будут одинаковыми. можете для примера подставить туда кей "slot real money b", там всё будет наглядно.
вобщем я предлагаю либо исправить линк на тот, который не парсит мусора, либо сделать какую-нибудь надстройку для парсера, позволяющую выбрать, откуда парсить подсказки.
и очень большая просьба рассмотреть и реализовать это как можно быстрее )
 
  • Like
Реакции: d4k
и да, забыл написать, есть большая разница в количестве подсказок, которые получаются по ссылкам. возьмите для примера кей "seven card stud to". апарсер по нему получит 10 подсказок, а по второму линку можно получить 19 подсказок. я так понимаю, по второму линку гугл отдаёт всё, что знает, а первый это так, чтобы помещалось на экране у юзера.
 
  • Like
Реакции: d4k
ещё одну штуку заметил, параметр client должен быть chrome, иначе будет выдаваться максимум 10 результатов.
 
Последнее редактирование:
и да, забыл написать, есть большая разница в количестве подсказок, которые получаются по ссылкам. возьмите для примера кей "seven card stud to". апарсер по нему получит 10 подсказок, а по второму линку можно получить 19 подсказок. я так понимаю, по второму линку гугл отдаёт всё, что знает, а первый это так, чтобы помещалось на экране у юзера.
Смысл парсига подсказок в том, чтобы получить не максмимум каких-то подсказок, а в том чтобы получить максимум подсказок, которые гугл отдает всем пользователям, поэтом и нужно парсить именно https://www.google.ru/complete/search.
 
Смысл парсига подсказок в том, чтобы получить не максмимум каких-то подсказок, а в том чтобы получить максимум подсказок, которые гугл отдает всем пользователям, поэтом и нужно парсить именно https://www.google.ru/complete/search.
смысл парсинга подсказок в том, чтобы получить максимальное количество не бредотекстовых подсказок. мне без разницы что там гугл отдаёт всем пользователям, т.к. я уже в первом посте описал, какие какашки он там отдаёт. с тем же успехом можно брать имеющиеся у тебя кеи и добавлять к ним рандомные слова, получишь те же результаты.
 
смысл парсинга подсказок в том, чтобы получить максимальное количество не бредотекстовых подсказок. мне без разницы что там гугл отдаёт всем пользователям, т.к. я уже в первом посте описал, какие какашки он там отдаёт. с тем же успехом можно брать имеющиеся у тебя кеи и добавлять к ним рандомные слова, получишь те же результаты.
Нужно просто доработать парсер подсказок и опционально дать пользователю возможно не брать "искусственные" подсказки. Но в любом случае нужно брать https://www.google.com/complete/search
Сделать это можно, так:
например, есть такой ответ от https://www.google.com/complete/search
Код:
)]}'
[[["тест\u003cb\u003e на iq\u003c\/b\u003e",0,[131]],["тест\u003cb\u003eо для пиццы\u003c\/b\u003e",0],["тест\u003cb\u003eо на вареники\u003c\/b\u003e",0],["тест\u003cb\u003eо на пельмени\u003c\/b\u003e",0],["тест\u003cb\u003eо на блины\u003c\/b\u003e",0],["тест\u003cb\u003eы\u003c\/b\u003e",0],["тест",0],["тест\u003cb\u003eо на чебуреки\u003c\/b\u003e",0],["тест\u003cb\u003eо на пирожки\u003c\/b\u003e",0],["тест\u003cb\u003eостерон\u003c\/b\u003e",0]],{"i":"slot real money x","q":""}]
Все подсказки у которых второе значение после текста >0 - искусственные, а все у которых 0 - человеческие.
В моём примере, все подсказки человеческие так как содержат 0, а вашем примере:
Код:
)]}'
[[["slot real money xbox one",33,[160],{"zh":"x\u003cb\u003ebox\u0026nbsp;one\u003c\/b\u003e"}],["slot real money xbox",33,[160],{"zh":"x\u003cb\u003ebox\u003c\/b\u003e"}]],{"ap":"slot real money ","i":"slot real money x","q":""}]
все подсказки искусственные, так как второе значение 33 >0

Я этот парсер давно для себя переписал на JS и у меня всё ок
 
Нужно просто доработать парсер подсказок и опционально дать пользователю возможно не брать "искусственные" подсказки. Но в любом случае нужно брать https://www.google.com/complete/search
Сделать это можно, так:
например, есть такой ответ от https://www.google.com/complete/search
Код:
)]}'
[[["тест\u003cb\u003e на iq\u003c\/b\u003e",0,[131]],["тест\u003cb\u003eо для пиццы\u003c\/b\u003e",0],["тест\u003cb\u003eо на вареники\u003c\/b\u003e",0],["тест\u003cb\u003eо на пельмени\u003c\/b\u003e",0],["тест\u003cb\u003eо на блины\u003c\/b\u003e",0],["тест\u003cb\u003eы\u003c\/b\u003e",0],["тест",0],["тест\u003cb\u003eо на чебуреки\u003c\/b\u003e",0],["тест\u003cb\u003eо на пирожки\u003c\/b\u003e",0],["тест\u003cb\u003eостерон\u003c\/b\u003e",0]],{"i":"slot real money x","q":""}]
Все подсказки у которых второе значение после текста >0 - искусственные, а все у которых 0 - человеческие.
В моём примере, все подсказки человеческие так как содержат 0, а вашем примере:
Код:
)]}'
[[["slot real money xbox one",33,[160],{"zh":"x\u003cb\u003ebox\u0026nbsp;one\u003c\/b\u003e"}],["slot real money xbox",33,[160],{"zh":"x\u003cb\u003ebox\u003c\/b\u003e"}]],{"ap":"slot real money ","i":"slot real money x","q":""}]
все подсказки искусственные, так как второе значение 33 >0

Я этот парсер давно для себя переписал на JS и у меня всё ок
я конечно за тебя очень рад, что ты переписал его на js ) но тут есть тоже свои нюансы, причём отличия довольно большие.
как объяснить разницу в количестве результатов ? апарсер сейчас может спарсить только 10 результатов. а по тому линку, что я предложил, можно спарсить все доступные результаты, которые гугл может предоставить. так что тут можно ещё поспорить, стоит ли "в любом случае" брать тот линк, по которому сейчас парсит апарсер. я вообще не понимаю, как можно спорить на эту тему, если по предложенному мной линку парсится больше кеев и они все не искусственные, тогда как по имеющемуся в апарсере линку парсится только 10 кеев, и то, часто парсится всякая несуразная фигня. не вижу даже смысла оставлять старый источник парсинга, если предложенный мной вариант во всём лучше. я даже не могу представить себе задачу, при которой парсить меньше ключей было бы лучше, чем парсить больше ключей.

я, как дорвейщик, понимаю, что время незасранных тематик в гугле прошло года 3 назад, и тот, кто имеет кучу нч кеев всегда будет получать в разы больше того, кто ориентируется только на сч и вч.

я потому и предложил добавить мой вариант в качестве второго источника парсинга, чтобы был выбор - парсить меньше, но высокочастотку вперемешку со всякой ересью, либо парсить всё что есть и без всякой фигни.
 
я потому и предложил добавить мой вариант в качестве второго источника парсинга, чтобы был выбор - парсить меньше, но высокочастотку вперемешку со всякой ересью, либо парсить всё что есть и без всякой фигни.
Хорошее решение, я за! )

p.s. Источников данных можно найти много, например теже подсказки аплстора можно тянуть с разных мест, только вопрос - на**я, если всё равно придется делать тысячи, десятки тысяч запросов, чтобы перебором вытянуть все подсказки, там уже не важно 10 результатов, 20, 30. Главное это достоверность данных и хотя бы уверенность в том, что источник данных не обосрется через год, чтобы не нужно было лезть и переписывать парсер.
1. Как вы верифицируете ваш источник данных сейчас, через полгода, через год? Кто будет проверять, что данные с второго урла совпадают с данными с первого урла?
2. Откуда этот урл и где используется обычными пользователями?
 
Хорошее решение, я за! )

p.s. Источников данных можно найти много, например теже подсказки аплстора можно тянуть с разных мест, только вопрос - на**я, если всё равно придется делать тысячи, десятки тысяч запросов, чтобы перебором вытянуть все подсказки, там уже не важно 10 результатов, 20, 30. Главное это достоверность данных и хотя бы уверенность в том, что источник данных не обосрется через год, чтобы не нужно было лезть и переписывать парсер.
1. Как вы верифицируете ваш источник данных сейчас, через полгода, через год? Кто будет проверять, что данные с второго урла совпадают с данными с первого урла?
2. Откуда этот урл и где используется обычными пользователями?
1. точно так же, как это реализовано сейчас - никак. нигде на ресурсах апарсера даже не написано, как обходить искусственные подсказки гугла, о какой проверке совпадения данных может идти речь ? кто с подсказками работает, тот и проверит.
2. урл из известного забугорного парсера лонгтейл кейвордов keywordshitter
 
Я этот парсер давно для себя переписал на JS и у меня всё ок
Было бы классно что-то подобное от команды апарсера увидеть либо стандарнтый парсер переписать для парсинга "человеческих" подсказок
 
Ранее Гугл отдавал подсказки в своих сервисах при запросе на домен suggestqueries.google.com. Он же использовался и в парсере. Но года 2-3 назад Гугл везде изменил домен на www.google.com, и в соответствии с этим были внесены изменения в парсер. Хотя на данный момент оба домена вроде как работают одинаково и на результат не влияют.

Относительно результатов. На них в первую очередь влияет параметр client. Сейчас в парсере используется значение psy-ab, по аналогии с поисковиком. Т.е. парсер собирает те же подсказки, что видит пользователь в поисковике.
В 1-м посте речь идет о client=chrome. По всей видимости это аналог client=chrome-omni, который используется при получении подсказок в адресной строке браузера Chrome. По крайней мере различий не было замечено. Выдача в данном случае действительно отличается от psy-ab, как по содержимому, так и по количеству.

Исходя из вышеописанного, можно добавить в SE::Google::Suggest SE::Google::Suggest выбор значения для параметра client.

Относительно "искусственных"/"человеческих" подсказок. Можно также добавить еще одну переменную в массив результатов. И при client=psy-ab заносить туда значение 1/0 по совету из 6-го сообщения. Но тогда остается открытым вопрос, что писать в эту переменную при client=chrome.
Код:
[
  "пого",
  [
    "погода",
    "погода чикаго",
    "погода в бруклине",
    "погода в москве",
    "погода филадельфия",
    "погода в бостоне",
    "погода в миннеаполисе",
    "погода нью йорк",
    "погода киев",
    "погода москва",
    "погода в майами",
    "погода в лос анджелесе",
    "погода вашингтон",
    "погода майами",
    "погода на завтра",
    "погода в ташкенте",
    "погода в сакраменто",
    "погода в орландо",
    "погода минск",
    "погода львів"
  ],
  [
    "",
    "",
    "",
    "",
    "",
    "",
    "",
    "",
    "",
    "",
    "",
    "",
    "",
    "",
    "",
    "",
    "",
    "",
    "",
    ""
  ],
  [],
  {
    "google:clientdata": {
      "bpc": false,
      "tlw": false
    },
    "google:suggestrelevance": [
      1250,
      601,
      600,
      566,
      565,
      564,
      563,
      562,
      561,
      560,
      559,
      558,
      557,
      556,
      555,
      554,
      553,
      552,
      551,
      550
    ],
    "google:suggesttype": [
      "QUERY",
      "QUERY",
      "QUERY",
      "QUERY",
      "QUERY",
      "QUERY",
      "QUERY",
      "QUERY",
      "QUERY",
      "QUERY",
      "QUERY",
      "QUERY",
      "QUERY",
      "QUERY",
      "QUERY",
      "QUERY",
      "QUERY",
      "QUERY",
      "QUERY",
      "QUERY"
    ],
    "google:verbatimrelevance": 851
  }
]
Собственно варианта скорее всего 2: либо значения из google:suggestrelevance, либо из google:suggesttype. Но в google:suggesttype ничего другого, кроме QUERY не было замечено, поэтому возможно смысла выводить данные из этого массива нет.
Какие значения больше нужны и замечал ли кто-то что-то другое в google:suggesttype?
 
да, действительно, на выдачу влияет именно клиент, спасибо.
по поводу выдачи значений в переменную при client=chrome. а зачем они там вообще нужны, если выдача там не искусственная и отделять "людей от коней" не нужно ? просто сделать переменную пустой да и всё.
 
просто сделать переменную пустой
Вот как раз, чтобы не пустовала, то можно что-то более-менее полезное в нее писать. Например, ту же релевантность (google:suggestrelevance), по которой, кстати, можно определять насколько подсказка релевантна запросу.
 
ну можно конечно и релевантность, но в условиях сбора большого количества подсказок будет неясно, какому именно запросу она будет релевантна, если она встретится у нескольких запросов ) это если обучать какую-нибудь свою нейросеть на основе алгоритмов релевантности подсказок самого гугла, тогда да, пригодится ))
 
Вот как раз, чтобы не пустовала, то можно что-то более-менее полезное в нее писать. Например, ту же релевантность (google:suggestrelevance), по которой, кстати, можно определять насколько подсказка релевантна запросу.
был неправ. сегодня заметил, что кроме QUERY в suggesttype может прилететь NAVIGATION, в случае если в качестве подсказки будет урл на какой-то сайт, так что можно действительно туда писать QUERY или не QUERY, чтобы отсеивать подсказки от всякой фигни. вот json-пример ответа вместе с запросом.
http://suggestqueries.google.com/complete/search?client=chrome&hl=en&gl=us&callback=?&q=buy essay online


array (
0 => 'buy essay online',
1 =>
array (
0 => 'buyessayonline.org reviews',
1 => 'http://buyessayonline.org',
2 => 'buy essay online login',
3 => 'buy essay online reddit',
4 => 'buy essay online reviews',
5 => 'buy essay online australia',
6 => 'buy essay online promo code',
7 => 'buy essay online safe',
8 => 'buy tok essay online',
9 => 'buy extended essay online',
10 => 'buy argumentative essay online',
11 => 'buy an essay online now',
12 => 'buy essay writing online',
13 => 'buy custom essay online',
14 => 'buy admission essay online',
),
2 =>
array (
0 => '',
1 => '',
2 => '',
3 => '',
4 => '',
5 => '',
6 => '',
7 => '',
8 => '',
9 => '',
10 => '',
11 => '',
12 => '',
13 => '',
14 => '',
),
3 =>
array (
),
4 =>
array (
'google:clientdata' =>
array (
'bpc' => false,
'tlw' => false,
),
'google:suggestrelevance' =>
array (
0 => 602,
1 => 601,
2 => 600,
3 => 561,
4 => 560,
5 => 559,
6 => 558,
7 => 557,
8 => 556,
9 => 555,
10 => 554,
11 => 553,
12 => 552,
13 => 551,
14 => 550,
),
'google:suggesttype' =>
array (
0 => 'QUERY',
1 => 'NAVIGATION',
2 => 'QUERY',
3 => 'QUERY',
4 => 'QUERY',
5 => 'QUERY',
6 => 'QUERY',
7 => 'QUERY',
8 => 'QUERY',
9 => 'QUERY',
10 => 'QUERY',
11 => 'QUERY',
12 => 'QUERY',
13 => 'QUERY',
14 => 'QUERY',
),
'google:verbatimrelevance' => 1300,
),
)
 
Начиная с 1.2.404 в SE::Google::Suggest SE::Google::Suggest произошли следующие изменения:
  • добавлена возможность выбирать источник подсказок: параметр Client, по-умолчанию имеет значение Chrome omnibox
  • в массив результатов $results добавлена переменная $type, в которой содержится информация о типе подсказки: 0 - человеческая, 1 - искусственная
  • добавлен параметр Follow suggests, который позволяет выбрать, какие подсказки подставлять в запросы при парсинге в глубину
 
Начиная с 1.2.404 в SE::Google::Suggest SE::Google::Suggest произошли следующие изменения:
  • добавлена возможность выбирать источник подсказок: параметр Client, по-умолчанию имеет значение Chrome omnibox
  • в массив результатов $results добавлена переменная $type, в которой содержится информация о типе подсказки: 0 - человеческая, 1 - искусственная
  • добавлен параметр Follow suggests, который позволяет выбрать, какие подсказки подставлять в запросы при парсинге в глубину
отличная новость, благодарю ) а насчёт предыдущего моего сообщения что-то решили ? про QUERY и NAVIGATION которое.
 
а насчёт предыдущего моего сообщения что-то решили ?
На момент появления сообщения уже были внесены изменения в парсер, поэтому пока что будет так.
Тем более, для client=psy-ab нету в ответе аналога suggesttype.
Судя из переписки выше, NAVIGATION - это ссылки, остальное всегда QUERY. Вы можете просто фильтровать получаемые подсказки, к примеру такой регуляркой:
Код:
^https?://.+
 
Назад
Верх