Bir web sitesindeki tüm PDF bağlantılarını nasıl ayıklayabilirim?


10

Bu biraz konu dışı, ama umarım bana yardım edersiniz. İhtiyacım olan makalelerle dolu bir web sitesi buldum, ancak bunlar bir sürü işe yaramaz dosya (çoğunlukla jpgs) ile karıştırılıyor.

Ben (bulmak için bir yol olup olmadığını bilmek istiyorum indir olmayan bağlantıların bir listesini yapmak için sunucudaki tüm PDF'leri). Temel olarak, neyin indirilip neyin indirilmeyeceği konusunda daha iyi bir görünüm elde etmek için PDF olmayan her şeyi filtrelemek istiyorum.


3
Görev için DownThemAll uygulamasını kullanabilirsiniz . Dosyaları filtrelere ve daha fazlasına göre indirmenize izin veren bir firefox uzantısıdır. Ben hiç kullanmadım bu yüzden tam bir öğretici yayınlamak mümkün olmayacak ama başka biri olabilir. Bu uzantıya daha aşina iseniz, lütfen doğru bir cevap göndermekten çekinmeyin.
Aralık'ta Glutanimate

Ah, sadece linkleri filtrelemek istediğini gördüm, indirmek değil. Gönderdiğim uzantı ile bunun mümkün olup olmadığını bilmiyorum. Ama denemeye değer!
Aralık'ta Glutanimate

Yanıtlar:


15

genel bakış

Tamam, buyurun. Bu bir betik biçiminde programlı bir çözümdür:

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

Kurulum

Sahip olmanız wgetve lynxyüklemeniz gerekecek :

sudo apt-get install wget lynx

kullanım

Komut dosyası .pdf, web sitesindeki tüm dosyaların bir listesini alır ve komut satırı çıktısına ve çalışma dizinindeki bir metin dosyasına döker. "İsteğe bağlı" wgetkomutunu yorumlarsanız komut dosyası tüm dosyaları yeni bir dizine indirmeye devam eder.

Misal

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

...

neden kullanıyorsunuz "$(pwd)/pdflinks.txt"yerine pdflinks.txt?
jfs

@JFSebastian Haklısın, gereksiz. Senaryoyu değiştirdim. Teşekkürler!
Aralık'ta Glutanimate

Mükemmel çalışır!
Chris Smith

6

basit bir javascript snippet'i bunu çözebilir: (NOT all Tüm pdf dosyalarının bağlantıda .pdf ile sonlandığını varsayıyorum.)

tarayıcınızın javascript konsolunu açın, aşağıdaki kodu kopyalayın ve js konsoluna yapıştırın, bitti!

//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]);

1
Benim için bu çok fazla geri geliyor. lu: Olması gerektiği işlevi lu.endsWith (".pdf") == 1yayınlanmıştır gibi koduyla ne var ise onları "* .pdf *" ile bana sadece PDF bağlantıları, tüm bağlantılar var, sonra. FWIW.
Dɑvïd
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.