【问题标题】:Popups block bulk download of pdfs from website with wget弹出窗口阻止使用 wget 从网站批量下载 pdf
【发布时间】:2018-04-30 11:55:46
【问题描述】:

我想通过wget 使用下面的bash 脚本从奥地利国家图书馆的website 下载一些可免费下载的pdf(旧报纸的副本):

for year in {14..57}; do
  for month in `seq -w 1 12`; do # -w for leading zero
    for day in `seq -w 1 31`; do
      wget -A pdf -nc -E -nd --no-check-certificate --content-disposition http://anno.onb.ac.at/pdfs/ONB_lzg_18$year$month$day.pdf
    done
  done
done

除了一些报纸问题不可用,即使它们存在,我也无法下载任何问题。我会收到诸如 1814 年 6 月 30 日现有问题的错误,例如:

http://anno.onb.ac.at/pdfs/ONB_lzg_18140630.pdf
Aufl"osen des Hostnamens anno.onb.ac.at (anno.onb.ac.at)... 193.170.112.230
Verbindungsaufbau zu anno.onb.ac.at (anno.onb.ac.at)|193.170.112.230|:80 ... verbunden.
HTTP-Anforderung gesendet, auf Antwort wird gewartet ... 404 Not Found
FEHLER 404: Not Found.

但是,如果您要手动下载相应的 pdf(here,请参见右上角),则必须在弹出确认中按“确定”。一旦你这样做了,我什至可以毫无问题地通过wget 下载该问题。

我怎样才能告诉 wget 通过命令行确认确认(当您想下载 pdf 时会遇到的问题),请参见下面的屏幕截图? wget 中是否有用于此的命令?

【问题讨论】:

  • 只需在你的脚本中运行 curl curl 'http://anno.onb.ac.at/cgi-content/anno_pdf.pl?aid=lzg&datum=18140630' -H 'Connection: keep-alive' -H 'Upgrade-Insecure-Requests: 1' -H 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.139 Safari/537.36' -H 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8' -H 'DNT: 1' -H 'Referer: http://anno.onb.ac.at/cgi-content/anno?aid=lzg&datum=18140630' -H 'Accept-Encoding: gzip, deflate' -H 'Accept-Language: en-US,en;q=0.9' --compressed
  • 他们可能正在使用基于 IP 的身份验证来允许。当您的 IP 被列入白名单后,当您点击请求时,可能会持续一段时间,并且应该允许您下载直到 IP 被列入白名单
  • 感谢 Tarun Lalwani 的快速回答。不幸的是,您的建议没有奏效。我只是将您的代码复制'n'粘贴到终端中,它只是存在而不做任何事情。
  • 是的,它不会做任何事情,但在那之后您是否尝试获取您的问题中的 404 URL?
  • 好吧让我再查一下,昨天我的IP第一次被列入白名单,所以查不到

标签: pdf download batch-processing wget


【解决方案1】:

您的代码中有两个问题。

  1. lgz 报纸并非在所有日期都可用
  2. PDF 并不总是在您使用的 URL 上生成和缓存。您需要先运行另一个 URL 以确保生成 PDF

以下是应该可以工作的更新代码

#!/bin/bash

for year in {14..57}; do
  DATES=$(curl -sS "http://anno.onb.ac.at/cgi-content/anno?aid=lzg&datum=18$year&zoom=33" |   gawk 'match($0, /datum=([^&]+)/, ary) {print ary[1]}' | xargs echo)

  for date in $DATES
  do 
      echo "Downloading for $date"

      curl "http://anno.onb.ac.at/cgi-content/anno_pdf.pl?aid=lzg&datum=$date" -H 'Connection: keep-alive' -H 'Upgrade-Insecure-Requests: 1' -H 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.139 Safari/537.36' -H 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8' -H 'DNT: 1' -H "Referer: http://anno.onb.ac.at/cgi-content/anno?aid=lzg&datum=$date" -H 'Accept-Encoding: gzip, deflate' -H 'Accept-Language: en-US,en;q=0.9' --compressed

      wget -A pdf -nc -E -nd --no-check-certificate --content-disposition http://anno.onb.ac.at/pdfs/ONB_lzg_$date.pdf
  done
done

【讨论】:

    猜你喜欢
    • 2023-03-15
    • 2018-10-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-27
    • 2020-05-04
    • 1970-01-01
    相关资源
    最近更新 更多