2010-12-20 16 views
7

¿Cómo se realiza una consulta de búsqueda en Google usando Python? ¿Cómo se almacenan los resultados de búsqueda en un documento de Microsoft Word?Búsqueda de Google con Python

+1

Suponiendo que usted quiere saber realmente cómo hacerlo, usted tiene al menos dos preguntas separadas aquí: 1. ¿Cómo se "buscar una cierta entrada de Google sobre el uso de Python" (supongo que quiere decir "la búsqueda para ", no" búsqueda ", es decir: la" entrada determinada "es la consulta, no el corpus, ¿verdad?). 2. ¿Cómo se almacena la información en un archivo "doc" (un archivo .doc de Microsoft Word u otra cosa?). –

+2

Para el futuro, tenga en cuenta que debe hacer estas preguntas como dos preguntas separadas, ya que no están muy relacionadas. – marcog

Respuesta

3

Ver esta pregunta

Google Search from a Python App

Contiene respuesta de Alex Martelli (Python 2.6) y un puerto de Python 3 también. Debería poder modificarlo en consecuencia. Utiliza el JSON y urllib que @Aphex menciona

+2

Me parece que las respuestas allí usan la ahora desactivada API de búsqueda web: las otras respuestas aquí usan la API de búsqueda personalizada actual. –

+0

@JohnY: sí, pero la [API de búsqueda personalizada] (http://code.google.com/apis/customsearch/v1/getting_started.html) requiere que configure los sitios en los que desea buscar; cómo lo configura. hasta buscar en toda la web, no solo un subconjunto? – Day

+0

@Día: No lo sé. No lo he usado La última vez que leí algo al respecto, no me pareció tan fácil como debería ser. Creo que Google está tratando de desalentar a las personas de usar su búsqueda en toda la web, pero tampoco sé la razón de eso. –

3

http://code.google.com/apis/customsearch/v1/getting_started.html

http://code.google.com/apis/customsearch/v1/using_rest.html

API de búsqueda personalizada de Google parece ser lo que estás buscando. Primero deberá obtener una clave API; entonces parece que le permiten hacer hasta 100 búsquedas por día.

Use urllib2 para buscar la URL y simplejson para descodificarla. (Busque en Google estos paquetes si aún no los tiene.) Puede usar json.load() para convertir la respuesta en un diccionario de Python del que pueda leer fácilmente. ¡Feliz hacking!

Editar: En cuanto a la creación del documento de Word, usted tiene una variedad de opciones, se detalla aquí: How can I create a Word document using Python?

15

Uso del provided API. Primero regístrese para obtener una clave de API here. Luego puede usar el paquete urllib2 de Python para buscar los resultados, p.

import urllib2 
import json 
import pprint 
data = urllib2.urlopen('https://www.googleapis.com/customsearch/v1?key=YOUR_KEY_HERE&cx=017576662512468239146:omuauf_lfve&q=lectures') 
data = json.load(data) 
pprint.PrettyPrinter(indent=4).pprint(data['items'][0]) # Print the raw content of the first result 

que emite

{ 'cacheid': 'TxVqFzFZLOsJ', 
    'displayLink': 'www.stanford.edu', 
    'htmlSnippet': 'Apr 7, 2010 \\u003cb\\u003e...\\u003c/b\\u003e Course materials. \\u003cb\ 
\u003eLecture\\u003c/b\\u003e slides \xc2\xb7 \\u003cb\\u003eLecture\\u003c/b\\u003e videos (2 
008) \xc2\xb7 Review sessions. \\u003cbr\\u003e Assignments. Homework \xc2\xb7 Reading. Exams 
. Final exam \\u003cb\\u003e...\\u003c/b\\u003e', 
    'htmlTitle': 'EE364a: \\u003cb\\u003eLecture\\u003c/b\\u003e Videos', 
    'kind': 'customsearch#result', 
    'link': 'http://www.stanford.edu/class/ee364a/videos.html', 
    'snippet': 'Apr 7, 2010 ... Course materials. Lecture slides \xc2\xb7 Lecture videos (2008 
) \xc2\xb7 Review sessions. Assignments. Homework \xc2\xb7 Reading. Exams. Final exam ...', 
     'title': 'EE364a: Lecture Videos'} 

Por favor asegúrese de reemplazar YOUR_KEY_HERE con su clave .

Para crear un documento de MS Word de Python, lea this question.

+2

Esta respuesta es peligrosa. Rompe con ciertas respuestas (raras) y contiene una falla de seguridad de ejecución de código remoto. (marcog: Sé que has puesto un comentario sobre "¡Ten cuidado con la información no confiable!". Pero hay muchas personas que ignorarán esa advertencia porque "funciona, por qué debería cambiarla". Luego escribirán código peligroso). Consulte también http://stackoverflow.com/questions/1083250/running-json-through-pythons-eval – user9876

+2

Sí, ¿por qué usar 'eval()' cuando puede usar 'json.load()' mucho más seguro? – Aphex

+2

@ user9876 @Aphex Cambiado en la respuesta. No estoy muy familiarizado con el procesamiento json en Python, así que gracias por señalarlo. – marcog

0

una pregunta por el precio de dos preguntas:

En primer lugar - que desea realizar una consulta de búsqueda en Google utilizando con Python Idiomas.

Segundo: Desea guardar los resultados de búsqueda en un documento de Microsoft Word.

Hola, me gusta Autohotkey Tools with Python Languages.

Si lo desea, realice las secuencias de comandos de movimientos de la computadora con las combinaciones de teclas.

Puede intentar utilizar el software AutoPythonLauncher en su sistema Windows. Para obtener más información Click Here o consulte este Youtube Video, puede ver lo que puede hacer.

Con esta herramienta puede hacer (Barras de herramientas) y crear un conjunto de imágenes clicables con secuencias de comando de Python.(Atajos de teclado Combinaciones)

1 - contestar la primera pregunta:

Con este código, se puede seleccionar cualquier texto y hacer dirigir un BUSQUEDA GOOGLE con parámetros de consulta (ejemplo: nosotros, 50 resultados)

Con AutoPythonLauncher puede elegir una imagen y escribir en el editor de comandos este código de Python.

Guarde y reinicie AutoPythonLauncher y puede usarlo como LANZADOR. Seleccione cualquier texto y haga clic con su dispositivo MOUSE o TOUCH en esa imagen, y está listo.

# US - SEARCH 
# Firefox Mozilla Browser - Chrome Browser - Internet Explorer Browser - Microsoft Edge Browser 
if WindowExists("MozillaWindowClass") or WindowExists("Chrome_WidgetWin_1") or WindowExists("CLASS:IEFrame"): 
    pyautogui.hotkey('ctrl', 'c') #copy the selected text to clipboard 1 memory 
    time.sleep(0.2) #wait 0.2 seconds 
    pyautogui.hotkey('ctrl', 't') # CTRL+t make a new tab + goto address bar - use CTRL+L for the active tab + goto address bar 
    time.sleep(0.2) #wait 0.2 seconds 
    texta = "https://www.google.com/search?q=" 
    a = tk.Tk() 
    textb = a.clipboard_get() # read the clipboard memory and put in variable textb 
    textc = "&lr=lang_us&hl=us&num=50" # google parameters [us - United States] 
    pyautogui.typewrite(texta + textb + textc) 
    pyautogui.hotkey('enter') 

2 - Responder a la segunda pregunta:

elegir una imagen y escribir en el Editor de comandos de Python este Código. Con esto puede guardar el (ejemplo: us 50 resultados) en un archivo.

import pyautogui 
import time 
time.sleep(.750) 
pyautogui.hotkey('Ctrl','a') #select all 
time.sleep(.750) 
pyautogui.hotkey('Ctrl','c') #Copy to clipboard Memory 
time.sleep(.750) 


#run notepad - If you want to use wordpad you can change the code a litte bid 
####################### 
import pywinauto 
pywinauto.Application().start(r"c:\windows\system32\notepad.exe") 
####################### 

#this will put All the text into notepad 
####################### 
time.sleep(2) 
pyautogui.hotkey('Ctrl','v') #paste the clipboard Memory. 
####################### 

#Save a File - "Save as..." 
####################### 
time.sleep(2) 
pyautogui.hotkey('Alt','f','a') #Many Programs use Shortcut Alt+f+a to "Save as..." 
time.sleep(.750) 
pyautogui.typewrite('c:\\test\\test.txt',0) 
time.sleep(2) 
pyautogui.hotkey('enter') 
####################### 
+0

Oh, usas pywinauto para iniciar la aplicación, pero nada más. Para este simple caso, 'subprocess.Popen (" notepad.exe ")' es suficiente. Pero pywinauto tiene funciones mucho más poderosas que hacen espera automática para abrir una ventana. Por lo tanto, no tiene que agregar llamadas 'time.sleep' codificadas. No sé por qué usa solo el 1% de la potencia de Python. –

+0

@ Vasily Ryabov - 1 - paquetes de pywinauto puede hacer muchas cosas más que solo iniciar la aplicación que es la razón por la que sí elegí este comando. 2 - Y ahora puedes reemplazar time.sleep (2) en ** pywinauto.Application(). WindowSpecification.Wait ('enabled') ** (esperar hasta ** Exist ** Ventana de Notepad) - pero aún así no trabajo que probé, la computadora necesita un poco más tiempo para ** existir ** y luego ** activar ** la ventana del Bloc de notas - y para principiantes es simple explicar el tiempo de comando.sleep (2) - y los usuarios siempre pueden cambiar los tiempos de suspensión para acelerar los movimientos de macro. – stevecody

+0

Podría estar bien explicar el escenario no funcional en más detalles. Recientemente hicimos algunas correcciones al método '.wait' (en 0.6.3). Entonces me sorprende que todavía no funcione. –

Cuestiones relacionadas