0

我正在尝试开发一个蜘蛛来从其他网站获取数据,只是为了学术意义。很好,我正在尝试爬取这个网站:http ://urlmin.com/ngz 如果这样会发生什么情况:我可以获得我想要的所有数据,但照片的目录。为什么?因为它加载了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 支持,数组仍然带有图像的目录。所以唯一的解释是它来自服务器端。问题是,如果它来自服务器端,为什么我的 curl 没有得到它?

谢谢,希望有人能理解我。

您可以在第 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 回答