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.
Utilisation avancée (Requests Official)
Recommended Posts