2017-10-18 6 views
1

Étant donné que je ne peux pas installer la bibliothèque wget dans mon travail, j'ai besoin d'une solution de contournement pour télécharger des fichiers utilisant des URL répertoriées dans un fichier txt. J'ai un fichier txt appelé urls.txt qui contient environ un millier de liens chacun dirigeant vers le fichier qui doit être téléchargé. Jusqu'à présent, j'ai quelque chose comme ça, mais malheureusement, il ne télécharge pas de fichiers bien que le script est en cours d'exécution.Télécharger des fichiers à partir d'URL répertoriées dans le fichier txt sans utiliser wget

import urllib.request 

with open("urls.txt", "r") as file: 
    linkList = file.readlines() 
for link in linkList: 
    urllib.request.urlretrieve(link) 

Répondre

1

Le second argument, le cas échéant, spécifie l'emplacement du fichier à copier (en cas d'absence, l'emplacement sera tempfile avec un nom généré)

De l'docs.

Vous devez spécifier un second argument se référant à un chemin de fichier auquel télécharger le contenu du fichier, comme ceci:

... 
for link in linkList: 
    urllib.request.urlretrieve(link, link.split('/')[-1]) 

En l'état actuel, vous téléchargez dans un fichier temporaire avec un nom généré. Je ne suis pas sûr à 100% de la façon dont vous êtes censé récupérer ce nom, il est donc préférable de ne spécifier que le chemin du fichier.

+0

Ok, donc mon adresse URL est quelque chose comme /DocumentXML2XLSDownload.vm?firsttime=true&repengback=true&documentId=XXXXXX&xslFileName=rher2xml.xsl&outputFileName=XXXX_2017_06_25_4.xls et je veux tous les fichiers à être nommé après la dernière partie « XXXX_2017_06_25_4.xls » et placé dans le répertoire du script. Comment dois-je procéder à ce sujet? Je suis complètement nouveau à Python et essaye toujours de comprendre quelle expression signifie quoi. – Seidhe

+0

C'est une question distincte. vous voulez savoir comment analyser une chaîne de requête d'URL. Google autour pour cela, et si vous n'avez pas de chance, postez une nouvelle question et piquez-moi, et je vais écrire une autre réponse. –

+0

@Seidhe Un moyen rapide et sale d'obtenir ce nom de fichier ici serait similaire à ce qu'utilisait @AdamBarnes: 'link.split ('outputFileName =') [- 1]' qui divise le lien en deux parties autour de '" outputFileName = "' donc la dernière partie ('[-1]') sera votre nom de fichier. Un moyen moins hacky serait en effet de creuser dans l'analyse d'url comme mentionné. – jadsq