我正在以编程方式与搜索引擎进行交互,我需要欺骗它,以为我是一个人在进行查询,而不是机器人。这涉及生成任何普通用户可能会搜索的查询,例如“ncaa足球时间表”或“月球登陆时间是什么时候?”我每天会发出超过一千个这样的查询,从词典中搜索随机单词不会削减它,因为这不是一个非常典型的搜索习惯。
到目前为止,我已经想到了几种生成逼真查询的方法:
后一种方法听起来像涉及大量的逆向工程。使用前一种方法,我一直无法找到超过80个左右的查询列表 - 我发现的唯一来源是AOL trends(50-100)和Google Trends( 30)。
我怎样才能生成大量类似人类的搜索词组? (对于任何依赖于语言的答案:我用Python编程)
答案 0 :(得分:1)
虽然这很可能会破坏Google的服务条款,但您可以轻松删除自动填充数据:
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)
为您提供以a
开头的前110个查询(包含一些重复项)。将每个字母刮到2的深度,你应该有大量合法的查询可供选择。