0

学術的な意味だけで、他のサイトからデータを取得するためのスパイダーを開発しようとしています。このウェブサイトをクロールしようとして います。なんで?JavaScriptがロードされているためです。ここまでは大丈夫です。以下は、dom がロードされた後に画像要素をロードする js コードです。

    var exibirImg = new ExibirImagens();
exibirImg.Imagens = [

    new ItemImagem(
        '../fotosanuncios/13886-Papucha 20074.JPG',
        '../fotosanuncios/13886-p-Papucha 20074.JPG'),

    new ItemImagem(
        '../fotosanuncios/13886-Motores Novos.JPG',
        '../fotosanuncios/13886-p-Motores Novos.JPG'),

    new ItemImagem(
        '../fotosanuncios/13886-Panther reformada5.JPG',
        '../fotosanuncios/13886-p-Panther reformada5.JPG'),

    new ItemImagem(
        '../fotosanuncios/13886-Panther reformada 2007.JPG',
        '../fotosanuncios/13886-p-Panther reformada 2007.JPG'),

];
exibirImg.PreLoad();
exibirImg.Titulo = 'Oferta A Gtr 323';
exibirImg.EscreveImagens();
exibirImg.TimeOutJs = 3500;
exibirImg.ImagemNotFound = 'imagens/ImagemNotFound.png';
exibirImg.IdImagemPrincipal = 'imagemPrincipalPF';
exibirImg.IdImagemMini = 'imagensPequenasPF';

私のCURLが上記のようにJSを取得すれば、それは本当に簡単ですが、そうではありません. 次のようになります。

var exibirImg = new ExibirImagens();
exibirImg.Imagens = [

];
exibirImg.PreLoad();
exibirImg.Titulo = 'Oferta A Gtr 323';
exibirImg.EscreveImagens();
exibirImg.TimeOutJs = 3500;
exibirImg.ImagemNotFound = 'imagens/ImagemNotFound.png';
exibirImg.IdImagemPrincipal = 'imagemPrincipalPF';
exibirImg.IdImagemMini = 'imagensPequenasPF';

exibirImg.Iniciar();

繰り返しますが、配列は AJAX などでロードする必要があります。しかし、ここでの本当の謎は、ブラウザの JavaScript サポートをオフにしても、配列には画像のディレクトリが含まれているということです。したがって、唯一の説明は、サーバー側から来たということです。そして質問は、それがサーバー側から来た場合、なぜ私のカールがそれを取得しないのですか?

ありがとう、誰かが私を理解してくれることを願っています。

同じページの262行目でそのスクリプトを確認できます

4

1 に答える 1

1

私のために働く:

$url = 'http://urlmin.com/ngz';

$ch = curl_init( $url );
curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt( $ch, CURLOPT_FOLLOWLOCATION, true);

if ( $result =  curl_exec($ch) )
{
    echo $result;
}
else
echo "cURL error: ".curl_error($ch);   

curl_close( $ch );

そして$result含まれています:

var exibirImg = new ExibirImagens();
exibirImg.Imagens = [

    new ItemImagem(
        '../fotosanuncios/13886-Papucha 20074.JPG',
        '../fotosanuncios/13886-p-Papucha 20074.JPG'),

    new ItemImagem(
        '../fotosanuncios/13886-Motores Novos.JPG',
        '../fotosanuncios/13886-p-Motores Novos.JPG'),

    new ItemImagem(
        '../fotosanuncios/13886-Panther reformada5.JPG',
        '../fotosanuncios/13886-p-Panther reformada5.JPG'),

    new ItemImagem(
        '../fotosanuncios/13886-Panther reformada 2007.JPG',
        '../fotosanuncios/13886-p-Panther reformada 2007.JPG'),

];
exibirImg.PreLoad();
于 2013-04-28T12:55:30.353 に答える