2012-04-10 10 views
0

私はウェブページ全体をダウンロードしたくありません。時間がかかり、多くの記憶が必要です。ウェブページの一部をダウンロードして解析するにはどうすればよいですか?

どうすればそのウェブページの一部をダウンロードできますか?それから私はそれを解析します。

<div id="entryPageContent" class="cssBaseOne">...</div>のみをダウンロードする必要があるとします。どうやってやるの?この使用

+2

できません。サーバーを制御してレスポンスをカスタマイズすることができる場合を除きます。その場合、部分的なビューを送り返すことができます。 – Rob

+0

おそらく:http://stackoverflow.com/questions/1538952/retrieve-partial-web-page – mikevoermans

+0

@Rob:サーバーは、すべてのデータを読み込む前に、クライアントがソケットを閉じるのを強制することはできません。 – geoffspear

答えて

3

「このHTMLのみ」でURLの一部をダウンロードすることはできません。 HTTPは、部分的なダウンロードのバイト範囲のみをサポートし、HTML/XMLドキュメントツリーの概念を持ちません。

ページ全体をダウンロードし、DOM parserにロードして、必要な部分だけを抽出する必要があります。

$html = file_get_contents('http://example.com/somepage.html'); 
$dom = new DOM(); 
$dom->loadHTML($html); 
$div = $dom->getElementById('entryPageContent'); 

$content = $div->saveHTML(); 
+0

'$ html = file_get_contents( 'http://example.com/somepage.html');'では、一時的にそのファイルをダウンロードしますか?記憶に?またはハードディスクのどこかに? – shibly

+0

これは$ htmlに直接行きます。ディスクに書き込む場合は、自分で書き出す必要があります。 –

+0

それはそのウェブページのソースをメモリに保存しますか? – shibly

0

curl_setopt($ch, CURLOPT_RANGE, "0-10000"); 

は、カールは、Webページの最初の10Kバイトをダウンロードするようになります。また、サーバー側がこれをサポートしている場合にのみ機能します。多くのインタプリタスクリプト(CGI、PHP、...)はそれを無視します。

関連する問題