This is a WEB Scraping & WEB Crawler function.
This short function downloads all the PDF book files and saves locally, from the main WEB page, one file at a time, the PDFs are at second level WEB pages for each book:
Import[#, "Hyperlinks"] & /@
StringContainsQ[#, ".pdf"] &],
CreateIntermediateDirectories -> True];
The 1st line should be:
just a copy/paste error.
It is funny because it is getBooks[bookUrl_]:= at edit mode... gets this way when published...