Problema
Estoy haciendo un montón de investigación en una larga lista de empresas y quiero saber cuáles son sus sitios web. Un buen indicador de que una empresa ha sido adquirida es que falta su sitio web o su sitio web de compay apunta a una compañía con un nombre diferente.
Así que quiero tomar una columna de nombres de empresas, enviarlos a una búsqueda web y recuperar el sitio web más probable. Estoy bien con la reutilización imperfecta, pero es mejor que buscar cada uno manualmente.
Solución
Estoy empezando con una columna llamada "Compañías" en mi tabla JMP. Obtengo los valores como una lista, y luego recorro la lista con una búsqueda. Estoy capturando el resultado de la r en una nueva lista, y una vez completada la búsqueda, uso Valores establecidos para agregar los valores a una columna vacía en la tabla original.
Podría ser posible hacer todo esto en JMP, pero no sabía cómo. Sin embargo, yo sé cómo correr
Comencé con su ejemplo, que requiere un par de paquetes: beautifulsoup4 y google (es decir, instalar Google pip). Este código devuelve un resultado de búsqueda.
(This is Python)
try:
from google import search
except ImportError:
print("No module named 'google' found")
# to search
query = "SAS Institute inc"
for j in search(query, tld="co.in", num=1, stop=1, pause=2):
print(j)
Entonces, simplemente envolví el código de Python en un pequeño JSL para gestionar la obtención de la lista, iterando a través de la búsqueda y los resultados.
names default to here(1);
outlist={}; clist=:Company<<GET values=""></GET>
El único truco real a tener en cuenta es que todo el texto del código de python está en la función Sustituir. En el Sustituto, "xyzxyz" se elimina y se reemplaza con el valor de la columna. En futuras versiones de JMP (como v14), habrá algunas formas mejores de manejar las variables y trabajar con python, pero aquí estoy escribiendo un archivo de texto, el código de python en el disco y luego ejecutando el programa python.
El programa vuelve con un valor que agrego a una lista. Un nombre de compañía entra y sale un artículo. Debido a que este es 1: 1, solo puedo poner la lista en una columna y todo debería estar alineado. Algunos de mis resultados devueltos necesitaban trabajo, pero la mayoría salió perfecto.
Discusión
Estoy casi al 100% seguro de que hay mejores soluciones para esto, pero esto tardó unos 15 minutos en armarse y, después de correr durante 10 minutos, tuve una lista de alrededor del 99%. Entonces, tienes algo mejor que lo que tengo, por favor, publícalo. La flexibilidad para ir y venir entre JMP y otros paquetes, y para usar otras herramientas con JMP hace que mi trabajo sea mucho más fácil. En mi ejemplo tenía alrededor de 600 nombres con los que trabajar. El tedio copiado y pegado podría tener drogas durante horas, pero con esto hice todo el trabajo y aún tuve tiempo para bloguear en menos tiempo que me hubiera costado hacerlo manualmente. Además, mañana cuando llegue la segunda mitad de la lista. Solo puedo ejecutar el script de nuevo.
@Craige_Hales , Gracias,... (¡Uy! ¿Es ese programa de ejecución un copiar y pegar de tu publicación?)
Buena demo RunProgram también!