Google ricerca dal programma Python

voti
-1

Sto cercando di prendere un file di input, leggere ogni riga, di ricerca di Google con quella linea e stampare tutti i risultati di ricerca della query solo se il risultato è da un sito Web specifico. Un semplice esempio per illustrare il mio punto, se cerco cane voglio solo risultati di stampa da wikipedia, sia che si tratti un risultato o dieci risultati da wikipedia. Il mio problema è che ho stato sempre risultati davvero strano. Qui di seguito è il mio codice Python che contiene un URL specifico voglio risultati da.

Il mio programma

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.

Il mio file di output non è corretto, il modo in cui dovrebbe essere formattato è

query string
http://www.
http://www.
http://www.
query string
http://www.
query string
http://www.medical...
http://www.medical...
È pubblicato 18/12/2015 alle 23:12
dall'utente
In altre lingue...                            


2 risposte

voti
0

Si può limitare la portata dei risultati per il sito specifico (ad esempio Wikipedia) al momento della query? Ad esempio, utilizzando:

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

Ciò a Google di restituire solo i risultati da quel dominio, quindi non sarà necessario filtrare loro dopo aver visto i risultati.

Risposto il 18/12/2015 a 23:30
fonte dall'utente

voti
0

Penso @Cahit ha l'idea giusta. L'unica ragione per cui si sarebbe trovato linee di solo la stringa di query è perché il dominio che stavi cercando non era in top_urls(). È possibile verificare questo controllando se la matrice contenuta nel dizionario per una data chiave è vuota

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]))
Risposto il 19/12/2015 a 00:13
fonte dall'utente

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more