NCBI Web サイトをクロールして、このリンクで利用可能なタンパク質のローカル アラインメントのリクエストを送信します: http://blast.ncbi.nlm.nih.gov/Blast.cgi?PROGRAM=blastp&BLAST_PROGRAMS=blastp&PAGE_TYPE=BlastSearch
PHP を使用して、このアドレスに投稿リクエストを送信し、新しいページに表示される結果を取得できるかどうかを知りたいです。最終結果が表示される前に、ページが複数のリダイレクトを受けるという問題もあります。テキスト領域に入力する次の入力を使用して、この状況をテストできます。
MHSSIVLATVLFVAIASASKTRELCMKSLEHAKVGTSKEAKQDGIDLYKHMFEHYPAMKKYFKHRENYTP
ADVQKDPFFIKQGQNILLACHVLCATYDDRETFDAYVGELMARHERDHVKVPNDVWNHFWEHFIEFLGSK
TTLDEPTKHAWQEIGKEFSHEISHHGRHSVRDHCMNSLEYIAIGDKEHQKQNGIDLYKHMFEHYPHMRKA
FKGRENFTKEDVQKDAFFVNKDTRFCWPFVCCDSSYDDEPTFDYFVDALMDRHIKDDIHLPQEQWHEFWK
LFAEYLNEKSHQHLTEAEKHAWSTIGEDFAHEADKHAKAEKDHHEGEHKEEHH
これが私の試みです:
$link = 'http://blast.ncbi.nlm.nih.gov/Blast.cgi?
PROGRAM=blastp&BLAST_PROGRAMS=blastp&PAGE_TYPE=BlastSearch';
$request = array(
'http' => array(
'method' => 'POST',
'content' => http_build_query(array(
'QUERY' => $aaText
)
),
)
);
$context = stream_context_create($request);
$html = file_get_html($link, false, $context);
echo $html;
このコードは、POST が行われていないかのように、最初のページを取得します。ありがとう
アップデート
私は以下の提案の1つを試しました - Goutte.
これが私の新しいコードです:
require_once 'goutte.phar';
use Goutte\Client;
$client = new Client();
$crawler = $client->request('GET', $link);
$form = $crawler->selectButton('b1')->form();
$crawler = $client->submit($form, array('QUERY' => $aaTest));
echo $crawler->html();
変数$aaTest
は、上で示したタンパク質配列です。良い点は、投稿して新しいページを取得しますが、すべてのリダイレクトをたどらないことです。すべてのリダイレクトに従うようにするにはどうすればよいですか?