Comment obtenir le nom du fichier pdf avec Python demandes?
Je suis en utilisant le Python les demandes de lib pour obtenir un fichier PDF à partir du web. Cela fonctionne bien, mais maintenant, je veux aussi le nom de fichier d'origine. Si je vais dans un fichier PDF dans Firefox et cliquez sur download
il a déjà un nom de fichier défini pour enregistrer le fichier pdf. Comment puis-je obtenir ce nom de fichier?
Par exemple:
import requests
r = requests.get('http://www.researchgate.net/profile/M_Gotic/publication/260197848_Mater_Sci_Eng_B47_%281997%29_33/links/0c9605301e48beda0f000000.pdf')
print r.headers['content-type'] # prints 'application/pdf'
J'ai vérifié le r.headers
pour quelque chose d'intéressant, mais il n'y a pas de nom de fichier. En fait j'ai été en espérant pour quelque chose comme r.filename
..
Quelqu'un sait comment je peux obtenir le nom de fichier d'un fichier PDF téléchargé avec les demandes de la bibliothèque?
Intéressant – j'allais dire, "eh bien évidemment
Comment êtes-vous de vérifier les en-têtes? Le nom est,
0c9605301e48beda0f000000.pdf
" (comme c'est à la demande), mais heureusement, j'ai décidé de tester d'abord. Et FireFox veut enregistrer en tant que "Mater Sci Eng B47 (1997) 33.pdf".Comment êtes-vous de vérifier les en-têtes? Le nom est,
content-disposition : inline; filename="Mater Sci Eng B47 (1997) 33.pdf"
. FWIW, de nombreux fichiers Pdf ont un Titre intégré, mais pas tous, et il peut ne pas être facile d'accès si le fichier PDF est en forme binaire.OriginalL'auteur kramer65 | 2015-08-04
Vous devez vous connecter pour publier un commentaire.
Il est spécifié dans l'en-tête http
content-disposition
. Donc pour extraire le nom que vous feriez:Nom extraits de la chaîne via une expression régulière (
re
module).Ceci ne fonctionnerait pas si le nom de fichier est encodé en utf8. Toute suggestion?
findall renvoie une liste de résultats. Vous auriez besoin d'un indice, comme ce
fname = re.findall("filename=(.+)", d)[0]
.OriginalL'auteur user3255354
Apparemment, pour ce qu'il est:
Ne sais pas si c'est toujours le cas, cependant.
OriginalL'auteur Maksim Solovjov
Sur la base de certaines autres réponses, voici comment je le fais. Si il n'y a pas un
Content-Disposition
en-tête, je l'analyser à partir de l'URL de téléchargement.Il y a sans doute de meilleures façons de l'analyse de la chaîne d'URL, mais pour des raisons de simplicité je ne voulais pas impliquer plus les bibliothèques.
OriginalL'auteur Nilpo