2016-11-29 3 views
1

商品画像をスクラップできません。私はajaxを使用しています。私のAjaxのファイルはtest.htmlというあるとここに私のコードです: -スクラップ製品コンテンツが動的にアップロードされているウェブサイトからの画像URL

$("#click_me").click(function() { 
    $.ajax({ 
     url: "test.php", 
     asyn:false, 
     success: function(result){ 
     console.log(result); 
    }}); 
}); 

test.phpをファイルコード: -

$url="http://www.kohls.com/catalog/bedroom-mattresses-accessories-furniture.jsp?CN=Room:Bedroom+Category:Mattresses%20%26%20Accessories+Department:Furniture&cc=bed_bath-TN3.0-S-mattresses"; 
$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, $url); 
curl_setopt($ch, CURLOPT_HEADER, false); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($ch, CURLOPT_AUTOREFERER, true); 
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); 
curl_setopt($ch, CURLOPT_USERAGENT,"Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:31.0) Gecko/20100101 Firefox/31.0 "); 
$out = curl_exec($ch); 
curl_close($ch); 
$out = str_replace("\n", '', $out); 
echo $out; 

注:$urlを確認してください。画像は動的に取り込まれており、スクラップすることはできません。私は迅速なガイダンスが必要です、私はそれらを掻き集めるためにpythonjsを使用しましたが、それは動作しませんでした! ありがとうございます!

答えて

0

HTMLから画像を解析する必要があります。これにはDOMDocumentが適しています。

サンプルコード(未テストが、理論的には動作するはずです)

$url="http://www.kohls.com/catalog/bedroom-mattresses-accessories-furniture.jsp?CN=Room:Bedroom+Category:Mattresses%20%26%20Accessories+Department:Furniture&cc=bed_bath-TN3.0-S-mattresses"; 

$html=file_get_contents($url); 
[email protected]::loadHTML($html); 
foreach($domd->getElementsByTagName("img") as $img){ 
$src=$img->getAttribute("src"); 
if(empty($src)){continue;} 
$src='http://www.kohls.com'.$src; 
$filename=basename($src); 
echo "downloading ".$filename.PHP_EOL; 
file_put_contents($filename,file_get_contents($src)); 
} 

あなたは画像全体がRAMにダウンロードされるようにカール は(また、これは、かなりのメモリ飢えているしたい場合はちょうどあなたのカールの機能を持つのfile_get_contentsを置き換えますどのように大きなものであってもカールしているとCURLOPT_FILEで最適化してファイルに直接書き込むことができますNASAなどから画像をダウンロードする場合はRAMを大量に節約できます)

+0

$ htmlはありません= file_get_contents($ url);製品画像のhtmlを取得しません。 "products images"はAjaxコールを使用してアップロードされているため、URLをスクレープするリクエストを送信すると、製品htmlをスクラップすることはありません。ロジックに従って、ループにのみ詰まります。 –

関連する問題