Extraire les fichiers ZIP du lien HTTPJ'ai publié des fichiers ZIP et je souhaite les extraire par programmation et les stocker sur mon PC à l'aide de JSL. Je ne sais pas à l'avance combien de fichiers seront présents.
Est-ce possible avec JSL ?

Re : Extraction de fichiers ZIP à partir d'un lien HTTPContent que tu puisses en tirer quelque chose ! Je suis presque sûr que le modèle pourrait être amélioré, en termes de vitesse. Cela ne fait probablement pas de différence pour les répertoires de quelques milliers de liens seulement, mais la partie len(1) pourrait ignorer plus rapidement le texte qui n'est pas un lien. Et un modèle plus flexible pour les liens serait également préférable.
@bryan_boone @ErnestPasour @paul_vezzetti
Re : Extraction de fichiers ZIP à partir d'un lien HTTPMerci Craig pour la réponse complète. Je vais prendre des éléments des deux suggestions et les fusionner dans une fonction générique pour répondre à mes besoins actuels et futurs.
Je sais que je devrais utiliser un REGEXP pour trouver les liens de la source HTTP, mais j'espérais une fonction '<< saveLink' pour la partie zip. 
Cela fonctionnera parfaitement bien cependant.
Excellente(s) réponse(s)
Re : Extraction de fichiers ZIP à partir d'un lien HTTPOu peut-être que c'est plus proche de ce que vous demandez:
path="https://www.vsp.virginia.gov/downloads/"; // a page with an index of files. Yours may be different format, adjust pattern below.
html = loadtextfile(path); // get the HTML text so we can scrape the links
// somewhat custom pattern for scraping the links, may be specific to this page
urls = {}; // this list will collect the urls
rc = patmatch(html,
patpos(0)+ // make sure the pattern matches from the start
patrepeat( // this is the loop that extracts the urls from the html
(
// the urls look like <A href="https://community.jmp.com/2017%20Virginia%20Firearms%20Dealers%20Procedrures%20Manual.pdf" target="_blank">
// and we want just the part between the quotation marks. Quickly scan forward (patBreak)
// for a < then see if it matches. >>url grabs the text between quotation marks.
(patbreak("<") + "</A><A href="\!""" target="_blank" rel="nofollow noopener noreferrer">> url + pattest(insertinto(urls,url);1))
| // OR
patlen(1) // skip forward one character
)
+
patfence() // fence off the successfully matched text. There is no need to backtrack if something goes wrong.
) +
patrepeat(patnotany("<"),0) + // any trailing bits of html are consumed here
patrpos(0) // make sure the pattern matches to the end
);
if(rc==0, throw("pattern did not match everything"));
show(nitems(urls),urls[6]); // pick item 6. You'll have a different strategy.
fullpath = path||regex(urls[6],"%20"," ",GLOBALREPLACE);// minimal effort to fix up the url, might need more work
pdfblob = loadtextfile(fullpath,blob); // download item 6, it is a pdf when this was written...
savetextfile("$temp/example.pdf",pdfblob); // save it somewhere</A>Re : Extraction de fichiers ZIP à partir d'un lien HTTP
fichier zip de @wilkap présentation
za=open("https://community.jmp.com/kvoqx44227/attachments/kvoqx44227/virtual-jug/12/1/VJUG%20July%202015.zip","zip");
zipfiles=za<
plusieurs choses à noter
- le fichier est téléchargé dans votre répertoire temporaire ; l'option "zip" pour ouvrir renvoie un objet d'archive zip
- vous pouvez obtenir une liste des membres à partir de l'archive zip en utilisant <
- vous pouvez utiliser le format blob avec une archive zip pour lire des données binaires comme les tables JMP
- la 3ème ligne utilise un 2ème argument pour indiquer à open que le blob est une table de données JMP
- la suppression de la variable za est nécessaire si vous réexécutez tout le script ; l'objet d'archive zip empêche la réutilisation du fichier dans le répertoire temporaire.
- vous pouvez utiliser loadtextfile/savetextfile avec des blobs pour télécharger le fichier zip à l'emplacement de votre choix (et le supprimer une fois terminé), puis utiliser l'archive zip pour traiter ce fichier.
- J'ai déjà regardé pour voir que le 4ème élément du répertoire d'archives était une table de données JMP