1

私はプログラムで検索エンジンとやり取りしていますが、ロボットではなく、クエリを作成する人間であると認識させる必要があります。これには、「ncaa サッカー スケジュール」や「月面着陸はいつですか」など、通常のユーザーが検索する可能性が高いと思われるクエリの生成が含まれます。私はこれらのクエリを毎日 1,000 件以上作成していますが、辞書からランダムな単語を検索しても、それはうまくいきません。

これまで、現実的なクエリを生成する方法をいくつか考えてきました。

  • その日の上位の Google (または Yahoo や Bing など) 検索のリストを取得する
  • Google のオートコンプリート機能を利用するには、辞書からランダムな単語を入力し、その後にスペースを入力して、推奨されるクエリをスクレイピングします。

後者のアプローチは、多くのリバース エンジニアリングを伴うように思えます。そして、前者のアプローチでは、80 ほどを超えるクエリのリストを見つけることができませんでした。私が見つけた情報源は、AOL トレンド(50 ~ 100) とGoogle トレンド(30) だけです。

人間のような検索フレーズの大規模なセットを生成するにはどうすればよいですか?
(言語に依存する回答: Python でプログラミングしています)

4

1 に答える 1

1

これは Google の TOS に違反する可能性が最も高いですが、オートコンプリート データは簡単にスクレイピングできます。

import requests
import json

def autocomplete(query, depth=1, lang='en'):
    if depth == 0:
        return

    response = requests.get('https://clients1.google.com/complete/search', params={
        'client': 'hp',
        'hl': lang,
        'q': query
    }).text

    data = response[response.index('(') + 1:-1]
    o = json.loads(data)

    for result in o[1]:
        suggestion = result[0].replace('<b>', '').replace('</b>', '')
        yield suggestion

        if depth > 1:
            for s in autocomplete(suggestion, depth - 1, lang):
                yield s

autocomplete('a', depth=2)で始まる上位 110 件のクエリが表示されますa(一部重複があります)。各文字を深さ 2 までスクレイプすると、大量の正当なクエリから選択できるはずです。

于 2013-09-08T17:24:16.773 に答える