我正在尝试下载此网页的内容:https://bcs.wiley.com/he-bcs/Books?action=index&itemId=1119299160&bcsId=10685。我特别感兴趣的是可以从“按章节浏览”、“按资源浏览”等菜单访问的 pdf 文件,您可以在上面的网页中看到。我尝试通过 下载该页面wget
,但没有成功。
我已经使用了该-r l 0
选项wget
并引用了 URL(如下面的评论中所述)。
你可以帮帮我吗?先感谢您!
答案1
wget
由于 JavaScript 处理 URL 的方式,单独使用是行不通的。您必须使用解析页面xmllint
,然后将 URL 处理成wget
可以处理的格式。
首先提取并处理由 JavaScript 处理的 URL,并将其输出到urls.txt
:
wget -O - 'https://bcs.wiley.com/he-bcs/Books?action=resource&bcsId=10685&itemId=1119299160&resourceId=42647' | \
xmllint --html --xpath "//li[@class='resourceColumn']//a/@href" - 2>/dev/null | \
sed -e 's# href.*Books#https://bcs.wiley.com/he-bcs/Books#' -e 's/amp;//g' -e 's/&newwindow.*$//' > urls.txt
现在下载打开每个 URL 找到的 PDF 文件urls.txt
:
wget -O - -i urls.txt | grep -o 'https.*pdf' | wget -i -
curl
选择:
curl 'https://bcs.wiley.com/he-bcs/Books?action=resource&bcsId=10685&itemId=1119299160&resourceId=42647' | \
xmllint --html --xpath "//li[@class='resourceColumn']//a/@href" - 2>/dev/null | \
sed -e 's# href.*Books#https://bcs.wiley.com/he-bcs/Books#' -e 's/amp;//g' -e 's/&newwindow.*$//' > urls.txt
curl -s $(cat urls.txt) | grep -o 'https.*pdf' | xargs -l curl -O