我正在尝试使用脚本从 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;
查看文档,您应该能够找到您需要的内容。