2017-06-25 6 views
-1

Un rôdeur fréquent et long sur ici: Je trouve habituellement mes questions répondu ici. Cependant, j'ai peut-être rencontré un projet simple mais vague qui m'échappe. Je suis assez nouveau pour Python (actuellement en utilisant la version 3.6).Python: Grattage d'une demande de fichier CSV

Je suis à la recherche: https://www.ishares.com/us/products/239726/

D'après ce que je peux dire, il y a des choses jquery impliqué ici: recherche près de la partie « Holdings » de la page. Au lieu de sélectionner 'Top 10', si 'Tous' est sélectionné, il y a une option pour obtenir les fonds 'à partir de'.

Si un mois historique spécifique est sélectionné, une invite pour télécharger un fichier .csv est créée. Ce que je voudrais faire, c'est obtenir chaque fichier csv produit à partir de la liste déroulante, qui remonte au 29 septembre 2006. En d'autres termes, télécharger automatiquement le fichier .csv qui est produit pour chaque demande donnée à travers cette liste déroulante .

Pour donner un contexte (pas nécessairement pertinent), je suis familier avec les pandas et bs4, et peut-être d'autres bibliothèques moins populaires. En arrière-plan, je garde quelques références de bureau: 'Beginning Python' par Magnus Lie Hetland et 'Python pour l'analyse des données: Data Wrangling avec Pandas, NumPy et IPython' par Wes McKinney.

Je voudrais une petite direction sur la façon d'aborder ce problème que je pourrais négliger. En d'autres termes, les miettes de pain sont utiles, mais ne demandent pas à quiconque de faire tout ce travail pour moi. Je voudrais explorer et apprendre autant que possible humainement.

Quelles bibliothèques/méthodes devrais-je utiliser? Je comprends que c'est complètement ouvert, donc je voudrais m'en tenir à BS4 et Pandas autant que possible. D'autres bibliothèques sont également utiles, mais celles-ci seraient le centre d'intérêt.

Merci!

+0

Si vous êtes un rôdeur de longue date, vous savez que ce genre de question n'est pas sur le sujet sur [SO] comme vous pouvez le voir sur [help/on-topic]. – pvg

+0

Vous pouvez construire l'URL associée à la commande csv et utiliser le module 'requests' pour obtenir les données. – Frash

+0

@pvg C'est certainement sur le point de rebrousser chemin, mais pouvez-vous fournir un critère spécifique d'invalidation que cette question rencontre? J'ai l'impression que c'est une question spécifique au sujet d'un problème de programmation, même si c'est un peu ouvert, alors je ne suis pas sûr de savoir à quel point c'est clair pour les autres que c'est hors sujet. – AlVaz

Répondre

-1

Je voudrais une petite direction sur la façon d'aborder cette question

l'aide des outils de développement du navigateur, examiner les demandes de réseau en cours. Vous verrez que lorsque vous choisissez un mois historique, une demande est faite. Si vous copiez l'URL à partir de cette requête, vous pouvez la coller dans votre navigateur pour voir si vous pouvez "rejouer" la requête pour obtenir la charge utile. Je l'ai testé, et vous pouvez. De plus, vous pouvez voir les paramètres de la requête très clairement. Ils ne sont pas obscurcis. Cela signifie que vous pouvez générer par programme des URL que vous pouvez ensuite utiliser cURL ou wget. Notez que j'ai essayé de spécifier un type de fichier "csv" et que j'ai reçu une réponse vide, mais quand j'ai demandé un type de fichier "json" j'ai reçu les données. YMMV. Bonne chance!

+0

Merci, AlVaz, cela a été super utile! – Skyline

+0

@Skyline Je pourrais vous aider. S'il vous plaît upvote et acceptez la réponse si vous croyez que cela répond à vos besoins. – AlVaz