即使有正确的 referer 和 cookies,wget 也会下载空文件

即使有正确的 referer 和 cookies,wget 也会下载空文件

我正在尝试使用脚本从 Brenda Enzymes 抓取一堆分子文件。如果我仅通过文件 URL 下载(这是一个 PHP 重定向),我会得到一个 0Kb 的文件,所以我认为他们正在检查 cookie 和/或 referer。

然后我这样做了:

第一个请求

$ wget --cookies=on --keep-session-cookies --save-cookies=cookies.txt "http://www.brenda-enzymes.info/php/search_result.php4?a=54&W%5B2%5D=&T%5B2%5D=1&Search=Search&l=100&os=1&RNV=1&RN=&T%5B0%5D=2&W%5B1%5D=3.4.21.5&T%5B1%5D=1&V%5B3%5D=1&W%5B3%5D=&T%5B3%5D=1&V%5B4%5D=1&W%5B4%5D=&T%5B4%5D=2&V%5B5%5D=1&W%5B5%5D=&T%5B5%5D=2&V%5B6%5D=1&W%5B6%5D=&T%5B6%5D=2&W%5B7%5D=&T%5B7%5D=2&FNV=1&orderDesc=1&orderByHTMLField=IC50+Value"

第二次请求

$ wget --referer="http://www.brenda-enzymes.info/php/search_result.php4?a=54&W%5B2%5D=&T%5B2%5D=1&Search=Search&l=100&os=1&RNV=1&RN=&T%5B0%5D=2&W%5B1%5D=3.4.21.5&T%5B1%5D=1&V%5B3%5D=1&W%5B3%5D=&T%5B3%5D=1&V%5B4%5D=1&W%5B4%5D=&T%5B4%5D=2&V%5B5%5D=1&W%5B5%5D=&T%5B5%5D=2&V%5B6%5D=1&W%5B6%5D=&T%5B6%5D=2&W%5B7%5D=&T%5B7%5D=2&FNV=1&orderDesc=1&orderByHTMLField=IC50+Value" --cookies=on --load-cookies=cookies.txt --keep-session-cookies --save-cookies=cookies.txt -O test.mol http://www.brenda-enzymes.info/brenda_ligand/download_ligand_molfile.php4?LigandID=298989

仍然什么都没有,结果test.mol是一个空文件。

但是,如果我在浏览器中点击第一个 URL,然后复制粘贴第二个 URL,它确实会下载一个实际的 3Kb 大小的.mol文件。

我遗漏了什么?谢谢。

答案1

执行您正在尝试的操作的更好方法是使用 SOAP 查询。根​​据他们的文档,Brenda 站点提供 SOAP 功能。

我不知道您在寻找什么类型的信息。以下是获取 EC 编号为 1.1.1.1 的分子的 Km 值的 Perl 脚本示例:

#!/usr/bin/perl -w
use SOAP::Lite;

$resultString = SOAP::Lite
-> uri('http://www.brenda-enzymes.info/soap2')
-> proxy('http://www.brenda-enzymes.info/soap2/brenda_server.php')
-> getKmValue("ecNumber*1.1.1.1#organism*Homo sapiens#")
-> result; 

print $resultString;

查看文档,您应该能够找到您需要的内容。

相关内容