0

TI はリモート サイトの HTML コードを取得したい。これには CURL を使用する。これは私のコードである

    $URL = "http://example.com/";

    $ch = curl_init();


    curl_setopt($ch, CURLOPT_URL, $URL);   
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_ENCODING, 'UTF-8');


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

これはほぼすべてのサイトでうまく機能し、完全な HTML コンテンツを取得できます。

しかし、取得結果が html コードである Web サイトが 1 つあります</head>。つまり、終了headタグの後、curl は html ソースを取得しません。

このウェブサイトの html ソースをブラウザで見るview sourceと、ここに html 全体が表示されます (サイトの動作も良好です)。

カールがhtmlソース全体を取得できない理由は何ですか?

4

2 に答える 2

3

おそらく、このサイトは、他のユーザーが自分のコンテンツをクロールするのを妨げています。User-AgentWeb ブラウザをシミュレートするために、リクエスト ヘッダーを追加することをお勧めします。

curl_setopt($ch,CURLOPT_HTTPHEADER,array('User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:19.0) Gecko/20100101 Firefox/19.0'));
于 2013-03-28T15:37:03.120 に答える
0

おそらく、ウェブサイトがあなたをリダイレクトしています。このオプションを追加します。

curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE);

これにより、curl はリダイレクトに従います。

于 2013-03-28T15:29:10.970 に答える