26

Do you know a good software to download all PDF links in a web page??

Operating system is Windows 7.

38

You can use wget and run a command like this:

wget --recursive --level=1 --no-directories --no-host-directories --accept pdf http://example.com

Or with the short options:

wget -r -l 1 -nd -nH -A pdf http://example.com

UPDATE: Since your update says you are running Windows 7: use wget for Windows from a cmd prompt.

UPDATE 2: For a graphical solution - though it may be overkill since it gets other files too is DownThemAll

| improve this answer | |
  • thank you kevin for your advice, wget looks good, anyway i would prefer a 'graphic' software, non command line. :) – iAsk Mar 20 '11 at 21:09
  • 2
    This rejects even the initial .html page. Has it ever been tested? – dan3 Jan 21 '15 at 18:28
  • The question asks about downloading all PDF links, so yes, the initial .html page will be ignored. – Kevin Worthington Jan 21 '15 at 21:48
  • Is there a posibility to do the same thing in Windows 7 using Power Shell? – Benedikt Buchert Jul 4 '15 at 11:28
  • 1
    I would also suggest throwing in a delay of at least a few seconds between file downloads so as to be nice and not overwhelm the remote server. e,g, for wget, add in a flag of -w 5 – KJH Jan 21 '16 at 15:21
9
  1. In your browser, press CTRL+SHIFT+J, and enter

    var pdflinks =[]; Array.prototype.map. call(document.querySelectorAll("a[href$=\".pdf\"]"), function(e, i){if((pdflinks||[]).indexOf(e.href)==-1){ pdflinks.push( e.href);} }); console.log(pdflinks.join(" "));

    This will return in the console:

    "https://superuser.com/questions/tagged/somepdf1.pdf" "https://superuser.com/questions/tagged/somepdf2.pdf" "https://superuser.com/questions/tagged/somepdf3.pdf"

  2. Now using wget with the command line options wget url1 url2 ...

Copy and paste this, open a console enter wget press the right mouse button to insert your clipboard content and press enter.

To use a download file, join the lines with "\n" and use the parameter as follows wget -i mydownload.txt

Note that most other (GUI) download programs too accept to be called with a space separated list of URLs.

Hope this helps. This is how I generally do it. It is faster and more flexible than any extension with a graphical UI, I have to learn and remain familiar with.

| improve this answer | |
  • 1
    Better yet, console.log('"' + pdflinks.join('" "') + '"') -- otherwise you don't actually get quoted URLs – dan3 Jan 21 '15 at 18:29
  • You can also use copy(pdflinks.join(" ")) to avoid manually copying the URLs. – hb20007 Nov 7 at 21:55
1

If you want to stay in the browser, I've written a web extension for exactly this purpose - I'm working on adding the ability to save scholarly article PDFs with properly formatted titles but if you just want to download 'em all it's perfect for this.

It's called Tab Save and on the Chrome web store here. You don't even have to input the list of URLs if you just open them all in tabs (but for large numbers of files this might slow a computer down so I added the option to add your own).

| improve this answer | |
0

I recently used uGet (on Windows) for this. It has a GUI, and you can filter the files you intend to download.

Saves trying to remember all those

| improve this answer | |
0

On Google Chrome, it's possible to use extensions such as:

  • Download Master

    With this extension you can download all images, videos, pdf, doc and any other file linked on the web page you are visiting.

| improve this answer | |
0

Google

There are few Python tools which allows downloading PDF links from the website based the Google search results.

E.g.

Note: I'm the maintainer of both mentioned scripts.

Both of them are implementing xgoogle Python library. My fork of this library is based on the pkrumins/xgoogle version.


Related: A web search from the Linux command line.

| improve this answer | |

Not the answer you're looking for? Browse other questions tagged or ask your own question.