Comment écrire un script python pour le téléchargement?
Je veux télécharger des fichiers à partir de ce site: http://www.emuparadise.me/soundtracks/highquality/index.php
Mais je veux seulement obtenir certains d'entre eux.
Est-il possible d'écrire un script python pour ce faire? J'ai une connaissance intermédiaire de l'python
Je suis à la recherche d'un peu de conseils, veuillez me diriger vers un wiki ou une bibliothèque pour accomplir cette
grâce,
Arbuste
Je recommande l'utilisation de BeautifulSoup pour analyser la page et d'en extraire les liens que vous voulez. À partir de là, il suffit de faire quelques méthodes que briser votre problème en étapes simples.
Pour le téléchargement de la partie, le haut-
comment sur l'utilisation de
Bien sûr, vous pourriez le faire, mais pourquoi? Ce n'est pas plus facile que de
merci, Ça fait plus de sens maintenant.
Pour le téléchargement de la partie, le haut-
urllib2
(docs.python.org/library/urllib2) est le moyen le plus facile; l'exemple de code dans la documentation est assez facile à suivre. Pour l'analyse, BeautifulSoup est le meilleur moyen de gratter HTML arbitraire; si vous savez que vous avez valide XHTML ou HTML 5 il y a d'autres options; si vous pouvez obtenir les informations lisibles à la machine XML ou JSON au lieu de lisible par l'homme, HTML, en premier lieu, je ferais ça.comment sur l'utilisation de
wget
avec subprocess
module de téléchargement de fichiers?Bien sûr, vous pourriez le faire, mais pourquoi? Ce n'est pas plus facile que de
urllib2
, ça va être plus difficile à déboguer, et il introduit une dépendance sur un outil qui n'est pas installé par défaut sur Mac, Windows, FreeBSD, certaines distributions linux, etc. À l'aide de wget
comme un remplacement pour le télécharger et l'analyse pourrait être une solution raisonnable, mais dans ce cas il n'y a pas besoin de Python.merci, Ça fait plus de sens maintenant.
OriginalL'auteur Rishub Nagpal | 2012-09-25
Vous devez vous connecter pour publier un commentaire.
J'ai regardé la page. Les liens semblent rediriger vers une autre page, où le fichier est hébergé, en cliquant sur laquelle télécharge le fichier.
Je voudrais utiliser mécaniser de suivre les liens de la page de droite, et ensuite utiliser BeautifulSoup ou lxml pour analyser la résultante de la page pour obtenir le nom de fichier.
Ensuite, c'est une simple question de l'ouverture du fichier en utilisant urlopen et de l'écriture de son contenu dans un fichier local comme suit:
Espère que ça aide
localFilePath
est souhaitée de votre chemin complet—répertoire et le nom de fichier.remoteFilePath
est l'URL.localFilePath
va contenir le répertoire où vous souhaitez enregistrer la musique. Par exemple,localFilePath
pourrait être/home/username/Downloads/OnlineMusic/file1.flac
Merci. Avec mechanize et BS, vais-je avoir à spécifier pour chacune des URL?
Vous avez en quelque sorte à identifier les liens qui vous importe. Cela peut être fait en vérifiant l'URL elle-même ou par l'ancre de texte associé
OriginalL'auteur inspectorG4dget
Faire une demande d'url pour la page. Une fois que vous avez la source, de filtrer et d'obtenir des url.
Les fichiers que vous souhaitez télécharger sont les url qui contiennent une extension spécifique. C'est avec cela que vous pouvez faire une expression régulière pour toutes les url qui correspondent à vos critères.
Après filtration, puis faire une demande d'url pour chaque appariés url des données et de l'écrire de mémoire.
Exemple de code:
Le code ci-dessus est écrit principalement pour Python2.X. Cependant, J'ai écrit un robot qui fonctionne sur n'importe quelle version à partir de 2.X
OriginalL'auteur Emmanuel Odeke
Je voudrais utiliser une combinaison de wget pour télécharger - http://www.thegeekstuff.com/2009/09/the-ultimate-wget-download-guide-with-15-awesome-examples/#more-1885 et BeautifulSoup http://www.crummy.com/software/BeautifulSoup/bs4/doc/ pour l'analyse, le fichier téléchargé
urllib2.urlopen
, tandis qu'avecwget
vous avez besoin d'au moins une ligne desubprocess
et une autre ligne pour lire le fichier, de plus, vous avez un fichier temporaire assis autour de ce que vous n'avez pas besoin et qui ont à gérer, etc. Aussi, cela signifie que vous devez installer wget si vous êtes sur Mac, Win, FreeBSD, une des distributions linux qui ne s'installe pas par défaut, etc.OriginalL'auteur Manan
Pourquoi oui! 5 ans plus tard et, ce n'est pas seulement possible, mais vous avez maintenant obtenu une beaucoup de façons de le faire.
Je vais éviter de code-exemples ici, en raison principalement souhaitez aider à briser votre problème en segments et vous donner quelques options pour l'exploration:
Segment 1: OBTENIR!
Si vous doit en tenir à la
stdlib
, pour python2 ou python3,urllib[n]
* est ce que vous allez avoir à utiliser pour les pull-down quelque chose à partir de l'internet.Encore une fois, si vous ne voulez pas de dépendances sur d'autres paquets:
urllib
ouurllib2
ou peut-être un autreurllib[n]
je l'oublier.Si vous n'avez pas à limiter votre importations de la Bibliothèque Standard:
vous avez de la chance!!!!! Vous avez:
requests
avec docs ici.requests
est la norme d'or pour gettin' trucs sur le web avec python. Je vous suggère de l'utiliser.uplink
avec docs ici. C'est relativement nouveau & pour plus programmatique interfaces client.aiohttp
viaasyncio
avec docs ici.asyincio
ai inclus dans python >= 3.5 seul, et c'est aussi une source de confusion. Cela dit, si vous êtes disposé à mettre dans le temps, il peut être incroyablement efficace pour exactement ce cas d'utilisation....Je voudrais aussi m'en voudrais de ne pas mentionner l'un de mes outils préférés pour l'analyse:
-
fake_useragent
repo ici. Docs comme sérieux pas nécessaire.Segment 2: Analyser Les!
Encore une fois, si vous doit en tenir à la stdlib et de ne pas installer quoi que ce soit avec
pip
, vous arrivez à utiliser l'extra-extra amusante et sécurisée (<==extrême-sarcasme)xml
builtin module. Plus spécifiquement, vous aurez à utiliser le:xml.etree.ElementTree()
avec docs ici.Il est intéressant de noter que la
ElementTree
objet est ce que le pip-téléchargeablelxml
la formule est basée sur, et le fait de faire plus facile à utiliser. Si vous souhaitez recréer la roue et d'écrire un tas de votre propre logique compliquée, à l'aide de la valeur par défautxml
module est votre option.Si vous n'avez pas à limiter votre importations de la Bibliothèque Standard:
lxml
avec docs ici. Comme je l'ai dit avant,lxml
est un wrapper autour dexml.etree
qui le rend humain-utilisable & met en œuvre tous ces outils d'analyse vous auriez besoin de faire vous-même. Cependant, comme vous pouvez le voir en visitant les docs, il n'est pas facile à utiliser par lui-même. Ce qui nous amène à...BeautifulSoup
akabs4
avec docs ici. BeautifulSoup rend tout plus facile. C'est ma recommandation pour ce.Segment 3: OBTENIR OBTENIR OBTENIR!
Cette section est presque exactement la même que "le Segment 1," sauf si vous avez un tas de liens a pas.
La seule chose qui change entre cette section et "secteur 1" est ma recommandation pour quoi utiliser:
aiohttp
ici télécharger façon plus rapide lorsque vous traitez avec plusieurs URLs, car il vous permet de télécharger en parallèle.*** - (où
n
a été décidé à partir de python-version ptyhon-version un peu frustrant façon arbitraire. Regarder quiurllib[n]
a.urlopen()
comme une fonction de haut niveau. Vous pouvez en lire plus à propos de cette appellation-convention clusterfk ici, ici, et ici.)**** - (Ce n'est pas tout à fait vrai. C'est plus de tri-de fonctionnellement vrai à l'échelle de temps humaine.)
OriginalL'auteur Rob Truxal