Question

Je suis en train d'automatiser l'extraction de données à partir d'un site web et je ne sais vraiment pas par où commencer. L'un de nos fournisseurs nous donne accès à des données d'exploitation de l'équipement par le biais d'un « Business Objects 11 » application en ligne. Si vous n'êtes pas familier avec cette application en ligne, pensez comme un générateur de rapports basé sur le Web. Le problème est que je suis en train de surveiller un grand nombre d'équipements et de ce fournisseur a seulement créé une demande pour extraire un journal à la fois. Cette demande prend le numéro d'équipement, la date de début et la date de fin ... Pour aggraver les choses, nous ne pouvons exporter au format Excel binaire depuis de « csv » l'exportation est cassé et ils refusent de le réparer ... donc nous sont limitées par 65 536 de limitation de la ligne d'Excel ... (cela revient à 3-4 jours d'enregistrement de données dans mon cas). Je ne peux pas créer un nouveau Resquest que seul le fournisseur dispose des droits d'administration nécessaires.

Que pensez-vous serait la façon la plus élégante de l'exécution d'un grand nombre de demandes (environ 800) à travers une interface web? Je suppose que je pourrais hardcode positions de la souris, cliquez sur les événements et les frappes avec des retards et tout ... Mais il doit y avoir une meilleure façon.

Je l'ai lu les scripts AutoHotKey et AutoIt, mais ils semblent se limiter à ce qu'ils peuvent faire sur le web. Aussi ... Je suis coincé avec IE6 ... Mais si vous savez d'une manière qui implique un autre navigateur, je suis toujours très intéressé par votre réponse.

(une fois que j'ai les fichiers journaux locaux, extraire les données est pas un problème)

Était-ce utile?

La solution

Il y a des choses que vous pourriez essayer. Si le site est un html et les rapports peuvent être demandés par une simple POST ou GET puis urlib / urlib2 et cookielib modules Python devrait être suffisant pour aller chercher un document Excel.

Ensuite, vous pouvez essayer: xlrd pour extraire des données à partir d'Excel.

De plus, jetez un oeil à: http://pamie.sourceforge.net /. Je ne ai jamais essayé moi-même, mais a l'air prometteur et facile à utiliser.

Autres conseils

Normalement, je suggère de ne pas utiliser IE (ou tout autre navigateur) du tout. Rappelez-vous, le logiciel de navigateur Web sont des programmes que proxy pour effectuer des requêtes http et l'affichage des résultats de manière significative. Il y a d'autres façons que vous pouvez faire des demandes similaires http et traiter les réponses. Presque toutes les langues modernes a cette construit en elle API quelque part. Ceci est appelé screen scraping éraflée web.

Mais pour compléter cette suggestion que je dois en savoir plus sur votre environnement de programmation: à savoir dans quelle langue la programmation que vous envisagez d'écrire ce script

Un exemple typique en utilisant C # où vous obtenez juste le résultat html sous forme de chaîne ressemblerait à ceci:

new System.Net.WebClient().DownloadString("http://example.com");

Vous analysez ensuite la chaîne pour trouver tous les champs dont vous avez besoin et envoyer une autre demande. La classe WebClient ont également une méthode de .DownloadFile() que vous pourriez trouver utile pour récupérer les fichiers Excel.

Comme vous pouvez utiliser .NET, vous devriez envisager d'utiliser Windows Forms contrôle WebBrowser. Vous pouvez automatiser la navigation sur le site, les boutons de presse, etc. Une fois la page du rapport est chargé, vous pouvez utiliser le code pour naviguer dans le DOM HTML pour trouver les données que vous voulez -. Pas d'expressions régulières impliquées

Je l'ai fait quelque chose comme il y a des années, pour extraire des données d'enchères d'eBay.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top