[PYTHON] Je souhaite voir une liste de fichiers WebDAV dans le module Requêtes

Demandes est pratique, n'est-ce pas? Je pense que c'est le module python le plus utilisé. J'aimerais qu'il soit installé en standard au lieu de urllib2.

Au fait, pour obtenir la liste des fichiers de WebDAV, je dois lancer une méthode appelée «PROPFIND», mais malheureusement, «les requêtes» ne le supportent pas.

requests.propfind('https://example.com')

Si vous voulez faire quelque chose comme ça, il retournera brillamment ʻAttribute Error: module'requests 'n'a pas d'attribut'propfind'`.

Au lieu de cela, utilisons les API de bas niveau Requests Request et Session pour lancer la méthode PROPFIND.

import requests

def propfind(url):
    
    req = requests.Request('PROPFIND', url, headers={'Depth': '1'})
    prepped = req.prepare()
    
    s = requests.Session()
    resp = s.send(prepped)
    return resp.text

La raison pour laquelle headers = {'Depth': '1'} est que si vous obtenez la liste entière dans WebDAV, cela mettra une charge côté serveur, donc seule la liste directement sous l'URL spécifiée est acquise. La réponse est XML, alors suivons-la avec ʻElementTree. Récupérez simplement l'attribut {DAV:} href. Passons le XML obtenu par le propfind (url) créé précédemment à la suivante xml_to_list (xml) `.

import xml.etree.ElementTree as ET

def xml_to_list(xml):
    root = ET.fromstring(xml)
    
    files = [ f.text for f in root.findall('.//{DAV:}href') ]
    
    if (files):
        return files
    else:
        None

La notation dans root.findall () est XPath. Cela renverra la liste des fichiers WebDAV sous forme de liste.

référence

Utilisation avancée (Requests Official)

Recommended Posts

Je souhaite voir une liste de fichiers WebDAV dans le module Requêtes
Je souhaite trier une liste dans l'ordre des autres listes
Je souhaite définir un cycle de vie dans la définition de tâche d'ECS
Comment obtenir une liste de fichiers dans le même répertoire avec python
Je veux rendre le type de dictionnaire dans la liste unique
Je veux imprimer dans la notation d'inclusion
Je veux voir le graphique en 3D! Je peux réaliser un tel rêve.
Je veux connaître la population de chaque pays du monde.
Une histoire qui n'a pas fonctionné lorsque j'ai essayé de me connecter avec le module de requêtes Python
Si vous voulez un singleton en python, considérez le module comme un singleton
[Linux] Une commande pour obtenir une liste des commandes exécutées dans le passé
Je veux convertir par lots le résultat de "chaîne de caractères" .split () en Python
Je veux expliquer en détail la classe abstraite (ABCmeta) de Python
Je veux colorer une partie de la chaîne Excel avec Python
Je souhaite laisser une commande arbitraire dans l'historique des commandes de Shell
J'ai fait un programme pour vérifier la taille d'un fichier avec Python
J'ai essayé d'afficher la valeur d'altitude du DTM dans un graphique
Python: je souhaite mesurer proprement le temps de traitement d'une fonction
J'ai créé une fonction pour voir le mouvement d'un tableau à deux dimensions (Python)
Je veux créer une fenêtre avec Python
Copiez la liste en Python
Je souhaite stocker les informations de la base de données dans la liste
Je souhaite personnaliser l'apparence de zabbix
Je veux afficher la progression en Python!
Je veux utiliser quatre règles compliquées dans l'instruction IF du modèle Django! → Utilisez un modèle personnalisé
Comment passer le résultat de l'exécution d'une commande shell dans une liste en Python
L'histoire de l'adresse IPv6 que je souhaite conserver au minimum
Je souhaite utiliser Python dans l'environnement de pyenv + pipenv sous Windows 10
J'ai créé une commande appdo pour exécuter des commandes dans le contexte de l'application
Je veux ajouter du silence pendant 1 seconde au début d'un fichier wav
Je souhaite stocker les résultats de% time, %% time, etc. dans un objet (variable)
Je veux voir le nom de fichier de DataLoader
Je souhaite intégrer une variable dans une chaîne Python
Je veux facilement implémenter le délai d'expiration en python
Je veux faire la transition avec un bouton sur le ballon
Je veux grep le résultat de l'exécution de strace
Je veux écrire en Python! (2) Écrivons un test
Même avec JavaScript, je veux voir Python `range ()`!
[python] Récupère la liste des classes définies dans le module
Je veux échantillonner au hasard un fichier avec Python
Je veux bien comprendre les bases de Bokeh
Je veux travailler avec un robot en python.
Je souhaite installer un package de Php Redis
[Python] Je veux faire d'une liste imbriquée un taple
Je veux écrire en Python! (3) Utiliser des simulacres
Je veux utiliser le jeu de données R avec python
Je souhaite augmenter la sécurité de la connexion SSH
Je voulais connaître le nombre de lignes dans plusieurs fichiers et j'ai essayé de l'obtenir avec une commande
Comment identifier l'élément avec le plus petit nombre de caractères dans une liste Python?
Comment lister les fichiers dans le répertoire spécifié (plusieurs conditions / recherche de sous-répertoire)
Je souhaite prendre une capture d'écran du site sur Docker en utilisant n'importe quelle police
Comment vérifier en Python si l'un des éléments d'une liste est dans une autre liste
[Commande] Commande pour obtenir une liste de fichiers contenant des caractères pleine largeur
Je veux démarrer beaucoup de processus à partir de python
Obtenez le nombre d'éléments spécifiques dans la liste python
Je souhaite utiliser uniquement le traitement de normalisation SudachiPy
Je veux obtenir des informations sur le fonctionnement de Yahoo Route
J'ai fait une fonction pour vérifier le modèle de DCGAN