2015-12-19 2 views
-1

Я пытаюсь взять входной файл, прочитать каждую строку, выполнить поиск в Google с этой строкой и распечатать все результаты поиска из запроса ТОЛЬКО ЕСЛИ результат получен с определенного сайта. Простой пример, иллюстрирующий мою мысль, если я ищу собаку, мне нужны только результаты, напечатанные из Википедии, будь то один результат или десять результатов из Википедии. Моя проблема в том, что я получаю действительно странные результаты. Ниже приведен код Python, содержащий определенный URL-адрес, из которого я хочу получить результаты.Поиск в Google из программы Python

Моя программа

inputFile = open("small.txt", 'r') # Makes File object 
outputFile = open("results1.txt", "w") 
dictionary = {} # Our "hash table" 
compare = "www.someurl.com/" # urls will compare against this string 

from googlesearch import GoogleSearch 

for line in inputFile.read().splitlines(): 
    lineToRead = line 
    dictionary[lineToRead] = [] #initialzed to empty list 
    gs = GoogleSearch(lineToRead) 
    for url in gs.top_urls(): 
     print url # check to make sure this is printing URLs 
     compare2 = url 
     if compare in compare2: #compare the two URLs, if they match 
      dictionary[lineToRead].append(url) #write out query string to dictionary key & append EACH url that matches 
inputFile.close() 

for i in dictionary: 
    print i # this print is a test that shows what the query was in google (dictionary key) 
    outputFile.write(i+"\n") 
    for j in dictionary[i]: 
     print j # this print is a test that shows the results from the query which should look like correct URL: "www.medicaldepartmentstore.com/..."(dictionary value(s)) 
     outputFile.write(j+"\n") #write results for the query string to the output file. 

Мой выходной файл неверен, как это должно быть отформатирован в

query string 
http://www. 
http://www. 
http://www. 
query string 
http://www. 
query string 
http://www.medical... 
http://www.medical... 

ответ

0

Вы можете ограничить область поиска результатов для конкретного сайта (например википедии) во время запроса? Например, с помощью:

gs = GoogleSearch("site:wikipedia.com %s" % query) #as shown in https://pypi.python.org/pypi/googlesearch/0.7.0 

Это проинструктировать бы Google возвращать только результаты из этой области, так что вам не нужно фильтровать их после просмотра результатов.

+0

Если вы заботитесь о том, результатах более чем одного домена, вы можете написать небольшой метод для генерации 'site' строки , Чтобы сделать несколько сайтов, просто используйте 'OR' - например' site: wikipedia.org OR site: stackoverflow.com' – Tommy

+0

Я не думал об этом, но это именно то, что я хочу сделать. @Cahit – fatalError

+0

@Tommy, это отличное предложение для другой проблемы, но я надеялся ограничить свои результаты только одним конкретным доменом. – fatalError

0

Я думаю, что @Cahit имеет правильную идею. Единственная причина, по которой вы получите строки , просто строка запроса объясняется тем, что домен, который вы искали, не был в top_urls(). Вы можете убедиться в этом, проверив, если массив, содержащийся в словаре для данного ключа является пустым

for i in dictionary: 
    outputFile.write("%s: " % str(i)) 
    if len(dictionary[i]) == 0: 
     outputFile.write("No results in top_urls\n") 
    else: 
     outputFile.write("%s\n" % ", ".join(dictionary[i])) 
Смежные вопросы