L'extraction de données à partir d'une URL résultat avec une mise en forme particulière
J'ai une URL:
http://somewhere.com/relatedqueries?limit=2&query=seedterm
où modifiant les entrées, la limite et la requête, permettra de générer des données utiles. Limite est le nombre max de terme possible et de requête est la graine terme.
L'URL fournit du texte formaté de cette manière:
oo.visualization.Query.setResponse({version:'0.5',reqId:'0',status:'ok',sig:'1303596067112929220',table:{cols:[{id:'score',label:'Score',type:'number',pattern:'#,##0.###'},{id:'query',label:'Query',type:'string',pattern:"}],rows:[{c:[{v:0.9894380670262618,f:'0.99'},{v:'newterm1'}]},{c:[{v:0.9894380670262618,f:'0.99'},{v:'newterm2'}]}],p:{'totalResultsCount':'7727'}}});
Je voudrais écrire un script python qui prend deux arguments (limite le nombre et la requête de la graine), d'aller chercher les données en ligne, d'analyser le résultat et revenir une liste avec les nouvelles conditions ['newterm1','newterm2'] dans ce cas.
J'aimerais un peu d'aide, en particulier avec l'URL aller chercher puisque je n'ai jamais fait cela avant.
OriginalL'auteur datayoda | 2010-10-29
Vous devez vous connecter pour publier un commentaire.
Il semble que vous pouvez briser ce problème en plusieurs sous-problèmes.
Sous-problèmes
Il y a une poignée de problèmes qui doivent être résolus avant d'écrire le script terminé:
Formant l'URL de la requête
C'est juste de la simple mise en forme de chaîne.
De la récupération des données
Vous pouvez utiliser le haut-urllib.demande de module pour cela.
Cette fonction renvoie un fichier comme objet appelé
data
. Vous pouvez également utiliser un avec-déclaration ici:Déballage JSONP
Le résultat que vous avez collé ressemble JSONP. Étant donné que l'emballage de la fonction qui est appelée (
oo.visualization.Query.setResponse
) ne change pas, nous ne pouvons tout simplement tranche de l'appel de cette méthode.Parsing JSON
L'résultant
result
chaîne est juste des données JSON. Analyser avec l'intégré dans le module json.De la traversée de l'objet graphique
Maintenant, vous avez un
result_object
qui représente la réponse JSON. L'objet lui-même être undict
avec des touches deversion
,reqId
, et ainsi de suite. Basé sur votre question, voici ce que vous devez faire pour créer votre liste.Mettre tous ensemble
Version de Python 2.7
Ce script a été écrit pour travailler avec Python 3. Je vais ajouter des notes à la réponse pour savoir comment l'utiliser sur Python 2.
OriginalL'auteur Wesley
je ne comprends pas bien votre problème, car à partir de votre code là, il me semble que vous utilisez Visualisation de l'API (c'est la première fois que j'entends à ce sujet d'ailleurs).
Mais bien si vous êtes juste à la recherche d'un moyen de récupérer les données à partir d'une page web vous pouvez utiliser urllib2 c'est juste pour l'obtention des données, et si vous souhaitez analyser les données récupérées, vous aurez à utiliser une bibliothèque appropriée comme BeautifulSoop
si vous faites affaire avec un autre service web (RSS, Atom, RPC) plutôt que des pages web, vous pouvez trouver un tas de bibliothèque python que vous pouvez utiliser et qui traitent de chaque service parfaitement.
OriginalL'auteur mouad