C'est un peu hors sujet, mais j'espère que vous allez m'aider. J'ai trouvé un site Web plein d'articles dont j'ai besoin, mais ceux-ci sont mélangés à de nombreux fichiers inutiles (principalement des fichiers jpgs).
Je voudrais savoir s'il existe un moyen de trouver (pas télécharger) tous les PDF sur le serveur pour faire une liste de liens. En gros, je voudrais simplement filtrer tout ce qui n'est pas un PDF, afin d'avoir une meilleure vue sur ce qu'il faut télécharger et ce qui ne l'est pas.
Aperç
Ok, voilà. C'est une solution programmatique sous forme de script:
#!/bin/bash
# NAME: pdflinkextractor
# AUTHOR: Glutanimate (http://askubuntu.com/users/81372/), 2013
# LICENSE: GNU GPL v2
# DEPENDENCIES: wget lynx
# DESCRIPTION: extracts PDF links from websites and dumps them to the stdout and as a textfile
# only works for links pointing to files with the ".pdf" extension
#
# USAGE: pdflinkextractor "www.website.com"
WEBSITE="$1"
echo "Getting link list..."
lynx -cache=0 -dump -listonly "$WEBSITE" | grep ".*\.pdf$" | awk '{print $2}' | tee pdflinks.txt
# OPTIONAL
#
# DOWNLOAD PDF FILES
#
#echo "Downloading..."
#wget -P pdflinkextractor_files/ -i pdflinks.txt
Installation
wget
et lynx
devront être installés:
Sudo apt-get install wget lynx
tilisation
Le script obtiendra une liste de tous les fichiers .pdf
sur le site Web et l'enverra dans le résultat de la ligne de commande et dans un fichier texte dans le répertoire de travail. Si vous commentez la commande "facultative" wget
, le script téléchargera tous les fichiers dans un nouveau répertoire.
Exemple
$ ./pdflinkextractor http://www.pdfscripting.com/public/Free-Sample-PDF-Files-with-scripts.cfm
Getting link list...
http://www.pdfscripting.com/public/FreeStuff/PDFSamples/JSPopupCalendar.pdf
http://www.pdfscripting.com/public/FreeStuff/PDFSamples/ModifySubmit_Example.pdf
http://www.pdfscripting.com/public/FreeStuff/PDFSamples/DynamicEmail_XFAForm_V2.pdf
http://www.pdfscripting.com/public/FreeStuff/PDFSamples/AcquireMenuItemNames.pdf
http://www.pdfscripting.com/public/FreeStuff/PDFSamples/BouncingButton.pdf
http://www.pdfscripting.com/public/FreeStuff/PDFSamples/JavaScriptClock.pdf
http://www.pdfscripting.com/public/FreeStuff/PDFSamples/Matrix2DOperations.pdf
http://www.pdfscripting.com/public/FreeStuff/PDFSamples/RobotArm_3Ddemo2.pdf
http://www.pdfscripting.com/public/FreeStuff/PDFSamples/SimpleFormCalculations.pdf
http://www.pdfscripting.com/public/FreeStuff/PDFSamples/TheFlyv3_EN4Rdr.pdf
http://www.pdfscripting.com/public/FreeStuff/PDFSamples/ImExportAttachSample.pdf
http://www.pdfscripting.com/public/FreeStuff/PDFSamples/AcroForm_BasicToggle.pdf
http://www.pdfscripting.com/public/FreeStuff/PDFSamples/AcroForm_ToggleButton_Sample.pdf
http://www.pdfscripting.com/public/FreeStuff/PDFSamples/AcorXFA_BasicToggle.pdf
http://www.pdfscripting.com/public/FreeStuff/PDFSamples/ConditionalCalcScripts.pdf
Downloading...
--2013-12-24 13:31:25-- http://www.pdfscripting.com/public/FreeStuff/PDFSamples/JSPopupCalendar.pdf
Resolving www.pdfscripting.com (www.pdfscripting.com)... 74.200.211.194
Connecting to www.pdfscripting.com (www.pdfscripting.com)|74.200.211.194|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 176008 (172K) [application/pdf]
Saving to: `/Downloads/pdflinkextractor_files/JSPopupCalendar.pdf'
100%[===========================================================================================================================================================================>] 176.008 120K/s in 1,4s
2013-12-24 13:31:29 (120 KB/s) - `/Downloads/pdflinkextractor_files/JSPopupCalendar.pdf' saved [176008/176008]
...
un simple extrait de code javascript peut résoudre le problème suivant: (NOTE: je suppose que tous les fichiers PDF se terminent par .pdf dans le lien.)
ouvrez la console javascript de votre navigateur, copiez le code suivant et collez-le dans la console js, c'est fait!
//get all link elements
var link_elements = document.querySelectorAll(":link");
//extract out all uris.
var link_uris = [];
for (var i=0; i < link_elements.length; i++)
{
//remove duplicated links
if (link_elements[i].href in link_uris)
continue;
link_uris.Push (link_elements[i].href);
}
//filter out all links containing ".pdf" string
var link_pdfs = link_uris.filter (function (lu) { return lu.indexOf (".pdf") != -1});
//print all pdf links
for (var i=0; i < link_pdfs.length; i++)
console.log (link_pdfs[i]);