如何使用wget下载带有html表单的页面(post方法)?

时间:2013-07-21 05:19:40

标签: html forms

我想使用wget来获取此页面的结果http://smart.embl-heidelberg.de/smart/batch.pl

我点击该页面上的“仅文字输出”,并将“标识符”的文件指定为具有以下内容的文件。

  

A0A183

然后我点击“提交查询”,这将引导我进入结果页面。我知道我应该以某种方式为wget提供--post-data选项以便下载结果页面。但我很难弄清楚这个选项应该是什么。谁能让我怎么弄清楚? (我尝试使用Chrome Devtools Network标签。但我不确定从那里获得--post-data选项。)

我也尝试了以下内容。但它生成了一个空输出文件。

~$ cat /tmp/000.txt
A0A183
~/linux/test/perl/library/WWW/Mechanize/bin/mech-dump$ mech-dump --forms http://smart.embl-heidelberg.de/smart/batch.pl

GET http://smart.embl-heidelberg.de/smart/search.cgi
  keywords=keywords...           (text)
  <NONAME>=Search SMART          (submit)

POST http://smart.embl-heidelberg.de/smart/batch.pl (multipart/form-data)
  IDS=                           (textarea)
  SEQS=                          (textarea)
  IDFILE=                        (file)
  SEQFILE=                       (file)
  TEXTONLY=<UNDEF>               (checkbox) [*<UNDEF>/off|1/Text-only output]
  LOOSE=<UNDEF>                  (checkbox) [*<UNDEF>/off|1/Substring matching for identifiers]
  DO_PFAM=<UNDEF>                (checkbox) [*<UNDEF>/off|DO_PFAM/include PFAM domains]
  INCLUDE_SIGNALP=<UNDEF>        (checkbox) [*<UNDEF>/off|INCLUDE_SIGNALP/include signal peptides]
  <NONAME>=<UNDEF>               (submit)
  <NONAME>=<UNDEF>               (reset)

~$ wget --post-data='IDFILE=/tmp/000.txt&TEXTONLY=1' http://smart.embl-heidelberg.de/smart/batch.pl

2 个答案:

答案 0 :(得分:2)

怎么样:

wget --post-data='IDS=A0A183&TEXTONLY=1' http://smart.embl-heidelberg.de/smart/batch.pl

答案 1 :(得分:0)

我知道这已经过时了,但得到的回答与 wget 一致。

wget 1.13.4或更高。 查看这篇文章: https://superuser.com/questions/86043/linux-command-line-tool-for-uploading-files-over-http-as-multipart-form-data

wget --header="Content-type: multipart/form-data boundary=FILEUPLOAD" --post-file 000.txt http://smart.embl-heidelberg.de/smart/batch.pl

<强> 000.txt

--FILEUPLOAD
Content-Disposition: form-data; name="IDS"


--FILEUPLOAD
Content-Disposition: form-data; name="SEQS"


--FILEUPLOAD
Content-Disposition: form-data; name="IDFILE"; filename="000.txt"
Content-Type: text/plain

A0A183
A0A182
--FILEUPLOAD
Content-Disposition: form-data; name="SEQFILE"; filename=""
Content-Type: application/octet-stream


--FILEUPLOAD
Content-Disposition: form-data; name="TEXTONLY"

1
--FILEUPLOAD--