1

나는 프로그래밍 방식으로 검색 엔진과 상호 작용하고 있으며, 나는 로봇과는 달리 인간이 만드는 쿼리라고 생각하도록 속일 필요가있다. 이것은 "ncaa football schedule"또는 "달 착륙시기"와 같이 일반 사용자가 검색 할 가능성이있는 검색어를 생성하는 것입니다. 나는 매일 1000 가지 이상의 질의를 작성하고 사전에서 임의의 단어를 검색하는 것은 그것을 잘라 내지 않을 것입니다. 왜냐하면 그것은 매우 일반적인 검색 습관이 아니기 때문입니다.인간과 유사한 검색 엔진 쿼리를 작성하는 방법은 무엇입니까?

  • 가 하루에 구글의
  • 만들기 사용을 검색 상단 구글의 목록을 얻습니다 (또는 야후 나 빙 등) :

    은 지금까지 나는 실제 쿼리를 생성 할 수있는 몇 가지 방법을 생각했다 사전에 임의의 단어를 입력하고 공백을 입력하고 추천 검색어를 스크랩하여 기능을 자동 완성합니다.

후자의 접근 방식은 많은 리버스 엔지니어링을 필요로하는 것처럼 들립니다. 이전 접근 방식에서는 80 개 이상의 쿼리 목록을 찾을 수 없었습니다. 발견 한 유일한 소스는 AOL trends (50-100) 및 Google Trends (30)입니다.

인간과 유사한 검색 구문을 생성하는 방법은 무엇입니까?
(모든 언어에 의존 대한 답변 : 나는 파이썬 프로그래밍거야)

답변

1

이 가장 가능성이 구글의 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로 다듬 으십시오. 합법적 인 쿼리를 선택해야합니다.

+0

와우, 예상보다 훨씬 쉽습니다. 고마워. 'yield suggestion'을 'if depth == 1 : yield suggestion'으로 변경하면 쉽게 수정할 수 있지만 깊이> 1에 대해서는 중복을 생성합니다. – Ponkadoodle