Bagaimana saya bisa mengekstrak semua tautan PDF di situs web?

10

Ini sedikit di luar topik, tapi saya harap kalian akan membantu saya. Saya telah menemukan situs web yang penuh dengan artikel yang saya butuhkan, tetapi itu dicampur dengan banyak file yang tidak berguna (terutama jpg).

Saya ingin tahu apakah ada cara untuk menemukan ( tidak mengunduh ) semua PDF di server untuk membuat daftar tautan. Pada dasarnya saya hanya ingin menyaring semua yang bukan PDF, untuk mendapatkan pandangan yang lebih baik tentang apa yang harus diunduh dan apa yang tidak.

Sebastiano Seno
sumber
3
Anda mungkin dapat menggunakan DownThemAll untuk tugas itu. Ini adalah ekstensi firefox yang memungkinkan pengunduhan file dengan filter dan lainnya. Saya tidak pernah menggunakannya sendiri sehingga saya tidak akan dapat memposting tutorial lengkap tetapi orang lain mungkin. Jika Anda lebih terbiasa dengan ekstensi ini, jangan ragu untuk mengirim jawaban yang tepat.
Glutanimate
Ah, saya baru saja melihat bahwa Anda hanya ingin menyaring tautan, bukan mengunduhnya. Saya tidak tahu apakah itu mungkin dengan ekstensi yang saya posting. Tetapi patut dicoba!
Glutanimate

Jawaban:

15

Gambaran

Ok, ini dia. Ini adalah solusi terprogram dalam bentuk skrip:

#!/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

Instalasi

Anda harus memiliki wgetdan lynxmenginstal:

sudo apt-get install wget lynx

Pemakaian

Script akan mendapatkan daftar semua .pdffile di situs web dan membuangnya ke output baris perintah dan ke file teks di direktori kerja. Jika Anda mengomentari perintah "opsional" wget, skrip akan melanjutkan untuk mengunduh semua file ke direktori baru.

Contoh

$ ./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]

...
Glutanimate
sumber
mengapa Anda menggunakan "$(pwd)/pdflinks.txt"bukan pdflinks.txt?
jfs
@ JFSebastian Anda benar, ini mubazir. Saya memodifikasi skrip. Terima kasih!
Glutanimate
Bekerja dengan sempurna!
Chris Smith
6

potongan javascript sederhana dapat menyelesaikan ini: (CATATAN: Saya menganggap semua file pdf diakhiri dengan .pdf dalam tautan.)

buka konsol javascript browser Anda, salin kode berikut dan tempel ke konsol js, selesai!

//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]);
sgx1
sumber
1
Bagi saya, ini mengembalikan terlalu banyak. The lufungsi yang dibutuhkan untuk menjadi: lu.endsWith (".pdf") == 1, maka itu membuat saya hanya link PDF, tidak semua link dengan "* .pdf *" di dalamnya, yang adalah apa yang saya punya dengan kode seperti yang diposting. FWIW.
Tanggal