Problème
Je fais des recherches sur une longue liste d'entreprises et je veux savoir quels sont leurs sites Web. Un bon indicateur de l'acquisition d'une entreprise est que son site Web est manquant ou que son site Web compay pointe vers une entreprise portant un nom différent.
Je souhaite donc prendre une colonne de noms de sociétés, les soumettre à une recherche sur le Web et récupérer le site Web le plus probable. Je suis d'accord avec une réutilisation imparfaite, mais c'est bien mieux que de rechercher manuellement chacune d'elles.
Solution
Je commence avec une colonne nommée "Entreprises" dans ma table JMP. Je reçois les valeurs sous forme de liste, puis je parcours la liste avec une recherche. Je capture le résultat de r dans une nouvelle liste et, une fois la recherche terminée, j'utilise Définir les valeurs à créer pour ajouter les valeurs à une colonne vide de la table d'origine.
Il serait peut-être possible de faire tout cela dans JMP, mais je ne savais pas comment. Je sais cependant comment courir
J'ai commencé avec leur exemple, qui nécessite quelques paquets: beautifulsoup4 et google (c'est-à-dire pip install google). Ce code renvoie un résultat de recherche.
(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)
Alors, je viens juste d’envelopper le code python dans un petit JSL pour gérer l’obtention de la liste, en effectuant une itération dans la recherche et les résultats.
names default to here(1);
outlist={}; clist=:Company<<GET values=""></GET>
La seule astuce à garder à l’esprit est que tout le texte du code python se trouve dans la fonction Substitute. Dans le substitut, "xyzxyz" est supprimé et remplacé par la valeur de la colonne. Dans les futures versions de JMP (comme v14), il y aura de meilleures façons de gérer les variables et de travailler avec python, mais ici, j'écris un fichier texte, le code python sur disque, puis j'exécute le programme python.
Le programme revient avec une valeur que j'ajoute à une liste. Un nom de société entre et un élément sort. Comme il s’agit d’un 1: 1, je peux simplement mettre la liste dans une colonne et tout devrait s’aligner. Quelques-uns de mes résultats retournés avaient besoin de travail, mais la plupart ont été parfaits.
Discussion
Je suis presque sûr à 100% qu'il existe de meilleures solutions à ce problème, mais cela a pris environ 15 minutes pour être mis en place et après 10 minutes de fonctionnement, j'avais une liste d'environ 99%. Donc, si vous avez quelque chose de mieux que ce que j'ai, s'il vous plaît, postez-le s'il vous plaît. La possibilité de faire la navette entre JMP et d’autres packages et d’utiliser d’autres outils avec JMP simplifie considérablement mon travail. Dans mon exemple, j'avais environ 600 noms à travailler. L'ennui du copier-coller pouvait contenir de la drogue pendant des heures, mais avec cela, tout le travail était fait et j'avais encore le temps de bloguer à ce sujet en moins de temps qu'il m'aurait fallu pour le faire manuellement. De plus, demain, quand j'aurai la deuxième moitié de la liste. Je peux simplement exécuter le script à nouveau.
@Craige_Hales , Merci,... (Oops!, est-ce que ce programme est un copier-coller de votre message?)
Belle démo de RunProgram aussi!