Λήψη πολλαπλών αρχείων από μια ιστοσελίδα

dimitris | Κυρ, 01/13/2008 - 23:19 | 3' | 3

Έστω ότι υπάρχει μια ιστοσελίδα γεμάτη με παραπομπές για αρχεία PNG ή RPM ή DEB ή δεν ξέρω γω τι άλλο.

Το ερώτημα είναι πως μπορείτε να κατεβάσετε αυτόματα όλα αυτά τα αρχεία χωρίς να χρειάζεται να κάνετε κλικ κάθε φορά σε διαφορετικό αρχείο.

Η απάντηση είναι να χρησιμοποιήσετε το lynx και το wget.
Το Lynx είναι ένας text-mode browser που εδώ θα τον χρησιμοποιήσουμε, σε συνδυασμό με διάφορες όμορφες εντολές του Linux, για να κατεβάσουμε την ιστοσελίδα και να πάρουμε από αυτήν μόνο τα urls των αρχείων που μας ενδιαφέρουν. Κατόπιν θα τα κατεβάσουμε με την εντολή wget μέσα σε ένα βρόχο for.

Στο Fedora εγκαθιστάτε το lynx με την εντολή:

su
yum install lynx

Ενώ στο Ubuntu δίνετε:

apt-get install lynx

Έστω λοιπόν ότι θέλουμε να κατεβάσουμε όλα τα RPM που βρίσκονται στην ιστοσελίδα http://site.org/rpms
Κατ' αρχάς δίνουμε την εντολή:

lynx -dump  http://site.org/rpms | grep rpm  | awk '{print $2}' > urllist.txt

Αυτή τα κατεβάσει την ιστοσελίδα, θα πάρει τα urls των RPMs και θα τα 'πετάξει' ως απλή λίστα στο αρχείο urllist.txt.

Τώρα που έχει δημιουργηθεί το αρχείο με τα urls μπορούμε να δώσουμε απλά το εξής για να κατέβουν όλα τα πακέτα:

for x in $(cat urllist.txt) ; do wget  $x ;done

 

Φόρουμ
Δώσε αστέρια!

MO: 5 (ψήφοι: 1)

Σχόλια

Χμ, υπάρχει και ένας πολύ πιο σύντομος τρόπος, απευθείας χρήση του wget με την εντολή:

wget -r -l 1 -A rpm -nd http://www.site.gr/rpms

Πρόσφατα βρήκα δύο plug-ins για τον firefox για λήψη πολλαπλών αρχείων από μια σελίδα πολύ εύκολα.Με το FlashGot και το DownThemAll κάνετε χρυσές δουλειές...;)

Με τις παρακάτω παραμέτρους το wget θα κάνει ένα πλήρες αντίγραφο της ιστοσελίδας που θα του δώσετε. Δηλαδή θα κατεβάσει τη σελίδα αλλά και όλα τα αρχεία (εικόνες, PDF, mp3, τα πάντα) που αναφέρονται στους συνδέσμους ώστε να δημιουργήσετε το δικό σας working local copy:

wget --recursive --no-clobber --page-requisites --html-extension --convert-links --restrict-file-names=windows --domains <DOMAIN>  --no-parent <WEBPAGE URL>

Το wget θα κατεβάσει την ιστοσελίδα και όλα τα αρχεία από τα links που θα βρει στη σελίδα, αρκεί τα αρχεία να βρίσκονται μέσα στο <DOMAIN> που θα του δώσετε (αν δεν το θέλετε αυτό, απλά βγάλτε την παράμετρο --domains). Επίσης, θα μετατρέψει τους συνδέσμους στα local paths των αρχείων (για να μπορείτε να τρέξετε τη σελίδα και offline) και μάλιστα θα μετατρέψει τα ονόματα ώστε να παίζουν και σε παλιές εκδόσεις Windows...