googleautocomplete脚本根据python2.7.12中的输入字符串截断结果

2024-09-30 06:31:24 发布

您现在位置:Python中文网/ 问答频道 /正文

在我进入细节之前,请注意我不是一个程序员。只是学习python并开始掌握一些东西。现在来谈谈眼前的问题:

我修改了一个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))

如果“result”包含构建短语的确切措辞,则代码中的某些内容会导致它被截断。输出示例:

  • 官僚主义,为什么官僚主义在早期政府中发展
  • 官僚主义,为什么官僚主义成为政府的一个分支
  • 官僚主义,为什么官僚主义在20世纪发展
  • 官僚机构,为什么官僚机构,为什么官僚机构在埃及发展
  • 官僚,为什么官僚,为什么韦伯认为官僚理想
  • 官僚主义,为什么官僚主义,为什么联邦官僚主义在发展
  • 官僚,为什么官僚,韦伯为什么研究官僚
  • 官僚作风,为什么官僚作风,为什么马克斯·韦伯害怕官僚作风

理想情况下,我想得到关键字和一个完整的结果字符串没有任何形式的截断。所以我希望这两个案子都是这样的:

  • 官僚主义,为什么官僚主义,为什么官僚主义成为政府的一个分支?你知道吗
  • 官僚机构,为什么官僚机构,为什么官僚机构在埃及发展

提前谢谢!你知道吗


Tags: inimportfordatareturngoogleresultout
1条回答
网友
1楼 · 发布于 2024-09-30 06:31:24

看起来你正在从结果中删除短语。所以你的代码就是按照你写的那样做的。。。你知道吗

删除此行:

results = [result.replace(phrase.lower(), '') for result in data[1]]

相关问题 更多 >

    热门问题