Прежде чем я углубится в детали, обратите внимание, что я не программист. Просто изучая python и начинаю разбираться с вещами. Теперь к вопросу:Скрипт Google Autocomplete обрезает результаты на основе строки ввода в Python 2.7.12
Я адаптировал autocomplete string generator, чтобы добавить список вопросов. Кажется, что он почти работает, но я попадаю на некоторые проблемы с форматированием в выходном файле.
Вот адаптированный код (это слишком много, но я ищу что-то для работы, прежде чем улучшать его).
import urllib, urllib2
import json
import time
import codecs
inFile = 'keywordFile.txt'
sep = ','
keywordField = 'keyword'
outFile = 'autoCompFile.txt'
google_endpoint = 'http://google.com/complete/search?output=firefox&q='
def find_index(fieldname, inFile):
with open(inFile, 'r') as f:
header = f.readline().rstrip().split(sep)
i = 0
for i in range(0, len(header)):
if header[i] == fieldname:
return i
break
else:
return -1
def build_phrase(keyword):
phrase = u'why did'
return u'%s %s' % (phrase, keyword)
def query_google(phrase):
url = '%s%s' % (google_endpoint, urllib.quote_plus(phrase))
data = urllib2.urlopen(url)
data = json.load(data)
results = [result.replace(phrase.lower(), '') for result in data[1]]
return results
kwIndex = find_index(keywordField, inFile)
with codecs.open(inFile, 'r', 'utf-8') as f:
with codecs.open(outFile, 'w', 'utf-8') as f_out:
f_out.write('keyword, autocomplete phrase\n')
data = f.readlines()
for record in data[1:]:
time.sleep(0.3)
record = record.rstrip()
items = record.split(sep)
kw = items[kwIndex]
phrase = build_phrase(kw)
results = query_google(phrase)
if len(results) > 0:
for result in results:
f_out.write('%s, %s, %s\n' % (kw, phrase, result))
else:
f_out.write('%s, %s\n' % (kw, phrase))
Что-то в коде вызывает «результат», чтобы усечение, если она включает в себя точную формулировку построенной фразы. Пример вывода:
- бюрократия, почему бюрократия, развиваться в начале правительства
- бюрократии, почему бюрократия, стала ветвью власти
- бюрократии, почему бюрократия, расти в 20-м веке
- бюрократия, почему бюрократия, почему бюрократия развивается в египте
- бюрократии, почему бюрократия, почему вб считает бюрократию идеальной
- бюрократии, почему бюрократия, почему ди d федеральная бюрократия выросла
- бюрократии, почему бюрократия, почему Weber исследование бюрократии
- бюрократия, почему бюрократия, почему М.Вебер страх бюрократии
В идеале, я хотел бы получить ключевое слово и полная строка результатов без какого-либо усечения. Поэтому я хочу, чтобы оба случая выглядели так:
- Бюрократия, почему бюрократия, почему бюрократия стала ветвью власти?
- бюрократия, почему бюрократия, почему бюрократия развивается в египте
Спасибо заранее!
Я не думаю, что это не имеет ничего общего с Python ... Кажется, больше похоже, как Google API реализован. EDIT: на самом деле, после прочтения вашего вопроса снова проблема понятна: 'results = [result.replace (phrase.lower(), '') для результата в данных [1]]' Вы избавляетесь от фраза из ваших результатов ... Это именно то, что делает код. Ответ будет приведен ниже. – Lunaweaver