wget baixa arquivos vazios mesmo com referenciadores e cookies apropriados

2

Estou tentando raspar a Brenda Enzymes para um monte de arquivos moleculares com um script. Se eu apenas baixar por URL do arquivo (é um redirecionamento do PHP), recebo um arquivo de 0 KB, então acho que eles estão verificando cookies e / ou referências.

Então eu fiz isso:

1º pedido

$ 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"

2º pedido

$ 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

Ainda nada, o test.mol resultante é um arquivo vazio.

No entanto, se eu seguir o primeiro URL em um navegador e, em seguida, copiar e colar o segundo URL, ele baixará um arquivo real de 3Kb-ish .mol .

O que estou perdendo? Obrigado.

    
por Kirill G 17.03.2013 / 16:38

1 resposta

2

A melhor maneira de fazer o que você está tentando é usar consultas SOAP. De acordo com sua documentação , o site da Brenda oferece a funcionalidade SOAP.

Eu não sei que tipo de informação você está procurando. Segue-se um exemplo de um script Perl para obter o valor de Km para a molécula com um número CE de 1.1.1.1:

#!/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;

Dê uma olhada na documentação, você deve encontrar o que precisa.

    
por 17.03.2013 / 17:08