我想从网站下载所有 *.pdf 文件。(https://www.parlament.gv.at/PAKT/PLENAR/)
但是当我打开 URL 时,只列出了前 50 个文档(并且也使用 WGET 下载了),因此我更改了命令中的 URL,包括搜索参数,当我在浏览器中打开它时它工作正常(它显示全部 145 个)但它在我的命令中不起作用。
您能给我提示或者帮助我吗?
wget --recursive --level=1 --no-directories --no-host-directories --no-check-certificate --accept pdf https://www.parlament.gv.at/PAKT/PLENAR/index.shtml?SUCH=&xdocumentUri=%2FPAKT%2FPLENAR%2Findex.shtml&pageNumber=&GP=XXV&STEP=&FBEZ=FP_007&NRBRBV=NR&R_SISTEI=SI&requestId=76AAFD95E4&LISTE=&jsMode=&STATT=ALLE&listeId=1070&EING=ALLE
我希望通过 URL 实现类似(或更困难)的目标https://www.parlament.gv.at/SERV/STAT/IND/
在第二种情况下,我甚至需要先做出选择,但我不知道该如何解决。
我提前感谢您的帮助。
答案1
在 Windows wget.exe
(GNU Wget 1.10.2)上,它确实无法正常工作(如果不引用 URL,则第一个 之后的 URL 部分会出现错误&
,并且如果 URL 周围有双引号,则会?
被 wget.exe 以某种方式转换为@
,导致 URL 无效)。另一方面,在 Debian Jessie(GNU Wget 1.16)上,它工作得很好(URL 周围有双引号) - 但我假设你使用的是 Windows,或者使用较旧的wget
。
w32sh 链接的 SO 问题中的“其他”答案(在评论中)似乎有效,只需将 URL 放在文本文件中(不引用)并将命令中的 URL 替换为-i URL.txt
。
对于第二种情况,您需要使用所需的参数为 HTTP GET 请求构建一个 URL。
如果你查看页面 HTML 源代码(使用“查看页面源代码”或浏览器中的内置页面检查器),你应该会找到如下标签
form
:< 表单 id="filterFormFP_023" 操作="/SERV/STAT/IND/index.shtml" 方法="获取" [...] >
因此,您的 URL 的第一部分应该是
https://www.parlament.gv.at/SERV/STAT/IND/index.shtml
(基本上将action
参数添加到主机名)。在表单中,请注意
fieldset
包含输入字段的“Zeitraum”下拉菜单:< 选择 id="FP_023_GP" [...] 名称="GP">
单选按钮“Teile”/“Personen”:
< 输入 id="FP_023_R_TP_1" 类型="radio" [...] 值="T" 已选中="" 名称="R_TP"> < 输入 id="FP_023_R_TP_2" 类型="radio" [...] 值="P" 名称="R_TP">
更多下拉菜单:
< 选择 id="FP_023_T" [...] 名称="T">
< 选择 id="FP_023_PADT" [...] 名称="PADT">
等等。
您需要从这些字段中取出
name
和要查询的值,并将它们附加到 URL 中,这样就变成了https://www.parlament.gv.at/SERV/STAT/IND/index.shtml?name1=value1&name2?value2&name3=value3&name4=value4
(等等)。请注意?
参数列表前面和&
每个参数名称-值对之间的 。对于下拉列表(标签),使用标签属性select
中列出的任何内容作为值。例如。。option
value
https://www.parlament.gv.at/SERV/STAT/IND/index.shtml?GP=XXIV&R_TP=T&T=B&PADT=178
最后,在浏览器中测试 URL,如果它像在浏览器中进行查询一样工作,则将 URL 放在文本文件中并使用上述方法
wget
。