1

Web サイトから一部のコンテンツを削除しようとしましたが、些細な問題が発生しましたが、解決策が見つかりません。最初のページでは機能しますが、(curl を使用して) 次のページをブラウズすると、ページ 1 のコンテンツが得られますが、これは奇妙なことです。ウェブサイトにはいくつかのスクラップ保護があると思いますが、それらを特定する方法が見つかりません...

<?php 
$i = 1;
$links = array();

while($i < 3) 
{ 
    $ch = curl_init();
    $url = 'http://www.gites-de-france.com/location-vacances-chambre-hotes.html?page=$i&chambre=o&xhtml=O&acc=CHAMBRE,CHAMBRE&order_by=prix&order_by_tri=asc&';
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_REFERER, "http://www.google.fr/");
    curl_setopt($ch, CURLOPT_USERAGENT, "MozillaXYZ/1.0");
    curl_setopt($ch, CURLOPT_HEADER, 0);
    curl_setopt($ch, CURLOPT_TIMEOUT, 100);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); 

    $html = curl_exec($ch);
    curl_close($ch);

    $doc = phpQuery::newDocument($html);

    foreach($doc['.vignette a'] as $a){
        $url = '';
        $links[] .= pq($a)->attr('href');
    }
$i++;
}
    print_r($links);
?>
4

3 に答える 3

1

これが解決策です。このWebサイトはCookieを使用してセッション番号を渡すため、次のコードを使用する必要があります

curl_setopt($ch, CURLOPT_COOKIEJAR, '/tmp/cookie.txt');
curl_setopt($ch, CURLOPT_COOKIEFILE, '/tmp/cookie.txt');

そして、それは今動作します!

于 2013-09-26T12:44:25.963 に答える