Bagaimana cara mengotomatisasi pengunduhan file?


4

Saya mendapat buku yang memiliki izin untuk mengakses versi digital dari scan hi-res dari sebagian besar karya seni dalam buku. Luar biasa! Sayangnya penyajian semua ini adalah 177 halaman dari 8 gambar masing-masing dengan tautan ke file zip jpgs. Menjelajahi sangat membosankan, dan saya ingin bisa mendapatkan semua file sekaligus daripada duduk dan mengklik masing-masing secara terpisah.

archive_bookname / index.1.htm - archive_bookname / index.177.htm masing-masing halaman memiliki 8 tautan masing-masing ke file

menautkan ke file seperti <snip>/downloads/_Q6Q9265.jpg.zip, <snip>/downloads/_Q6Q7069.jpg.zip, <snip>/downloads/_Q6Q5354.jpg.zip. itu tidak cukup berjalan. Saya tidak bisa mendapatkan daftar direktori induk /downloads/ map.

Selain itu, file berada di belakang dinding masuk, sehingga melakukan alat non-browser, mungkin sulit tanpa mengetahui cara membuat ulang info sesi.

Saya telah melihat ke wget sedikit tetapi saya cukup bingung dan tidak tahu apakah itu akan membantu saya dengan ini. Adakah saran tentang cara mengatasi ini? Bisakah wget melakukan ini untukku secara otomatis?

Jawaban:


2

Anda dapat menentukan file input html dengan

wget -F -i <file>

jadi Anda bisa membuang file html dan mengulanginya
(Saya telah menambahkan url dasar untuk tautan relatif):

for i in <whereYouDumpedFiles>/*.html
do
  wget -F -B <base-url> -i $i
done

kalau tidak

Anda bisa membuang tautan ke file (dipisahkan oleh baris baru) dengan metode apa pun dan melakukan ini:

wget -i <url-file>

cara yang baik untuk mendapatkan tautan tersebut adalah:

lynx -hiddenlinks=ignore -nonumbers -listonly --dump <relevant-url> \
 | sort | uniq | sed /<regexp-pattern-of-urls-you-want>/\!d

mungkin dalam for loop yang ditambahkan ke 'url-file'


2

Menggunakan python mungkin lebih mudah. Jadi ini adalah solusi menggunakan python. Jika python bukan pilihan bagi Anda, abaikan. :)

Saya berasumsi menggores situs web itu legal.

Tulis skrip Python sederhana untuk mengulang archive_bookname/index.1-177.htm, memo menggunakan mereka BeautifulSoup , cari tautan dengan penyeleksi kelas css atau pencocokan regex sederhana, lalu gunakan urllib.urlretrieve() untuk mendapatkan file. Begitulah cara saya melakukannya.


Saya pasti memiliki akses legal ke semua file di dalamnya, saya tahu banyak. Saya menghubungi mereka untuk menyebutkan bahwa saya berharap ada cara yang lebih mudah untuk mengakses file dan tidak pernah mendapat jawaban
Damon

mengapa format kode itu ?!
Chris2048

Karena aku lebih terbiasa dengan python daripada wget. Sedang menunggu seseorang untuk mengirim solusi wget. :-)
Bibhas

@Bibhas maaf, saya tidak bermaksud ada yang salah dengan jawaban Anda, hanya mengapa Anda memasukkan "Saya menganggap menggaruk situs web adalah legal" dalam pemformatan kode?
Chris2048

@ Chris2048 Oh! Itu bukan tag kode. Itu blockquote. Saya ingin menyoroti garis itu. Itu sebabnya.
Bibhas

0

Atau Anda cukup menggunakan Perl dan modul briliannya bernama www :: mechanize. Sangat sederhana untuk menyatukan sesuatu dan ada banyak contoh di dokumentasi CPAN resmi.


'cukup' gunakan PERL tidak akurat untuk saya: p Saya melakukan pemrograman, tetapi tidak akrab sama sekali tentang bagaimana untuk mulai mencari ke dalam itu ..
Damon
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.