2011-10-12 4 views
4

그래서 다른 사이트에서 일부 이미지를 잡기 위해 노력하고있어를 사용하여 여러 페이지에서 다운로드 할 이미지, 문제는 각각의 이미지가 다른 페이지에 있습니다잡아가/PHP는으로, preg_match_all & 컬

IE : ID/1, ID/2, ID/3 등 등

내가 사용하여 주어진 하나의 URL에서 이미지를 잡을 수있는 아래의 코드가 지금까지 :

$returned_content = get_data('http://somedomain.com/id/1/'); 

을하지만 배열 될 위의 라인을 만들 필요를 (내 생각) 그래서 1 페이지에서 이미지를 가져 와서 2 페이지의 다음 이미지를 가져온 다음 3 페이지 등으로 이동합니다. au 전부

function get_data($url){ 
$ch = curl_init(); 
$timeout = 5; 
    curl_setopt($ch,CURLOPT_URL,$url); 
    curl_setopt($ch,CURLOPT_RETURNTRANSFER,1); 
    curl_setopt($ch,CURLOPT_CONNECTTIMEOUT,$timeout); 
    curl_setopt($ch,CURLOPT_USERAGENT,'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.13) Gecko/20080311 Firefox/2.0.0.13'); 
$data = curl_exec($ch); 
    curl_close($ch); 
return $data; 
} 

$returned_content = get_data('http://somedomain.com/id/1/'); 

if (preg_match_all("~http://somedomain.com/images/(.*?)\.jpg~i", $returned_content, $matches)) { 

$src = 0; 
     foreach ($matches[1] as $key) { 

if(++$src > 1) break; 

      $out = $key; 
     } 

     $file = 'http://somedomain.com/images/' . $out . '.jpg'; 


$dir = 'photos'; 

$imgurl = get_data($file); 

file_put_contents($dir . '/' . $out . '.jpg', $imgurl); 

echo 'done'; 
} 

항상 도움을 주신 데 대해 감사드립니다.

+0

있습니까 정말로 PHP를 사용하고 싶으십니까? 가능한 것은 아니지만 결국 원하는 결과에 따라 반 자동화로 해결되는 여러 가지 문제가 발생할 수 있습니다. – hakre

+0

PHP는 현재 내가 아는 유일한 코드입니다 (예 html, css). 최종 결과는 나중에 찾아 볼 수있는 몇 가지 이미지를 다운로드하는 것이지만 약 100 개의 이미지가 있으며 각 페이지를 방문하고 싶지 않습니다. " >> "다른 이름으로 저장"을 마우스 오른쪽 버튼으로 클릭하십시오. – Dizzi

+0

어떤 운영 체제를 사용하고 있습니까? – hakre

답변

4

페이지 당 하나의 이미지를 저장하는 데 관심이있는 것처럼 보였으므로 상당히 혼란 스러웠습니다. 그러나 코드는 실제로 각 페이지의 모든 이미지를 저장하려고하는 것처럼 보입니다. 그래서 완전히 오해했을 가능성이 있습니다 ...하지만 여기에갑니다. 각 페이지에 걸쳐 반복

어려운되지 않습니다 :

$i = 1; 
$l = 101; 

while ($i < $l) { 
    $html = get_data('http://somedomain.com/id/'.$i.'/'); 
    getImages($html); 
    $i += 1; 
} 

후 다음을 당신이 특정 페이지에 모든 이미지를 저장하려고하는 것으로 가정합니다 : 당신이

function getImages($html) { 
    $matches = array(); 
    $regex = '~http://somedomain.com/images/(.*?)\.jpg~i'; 
    preg_match_all($regex, $html, $matches); 
    foreach ($matches[1] as $img) { 
     saveImg($img); 
    } 
} 

function saveImg($name) { 
    $url = 'http://somedomain.com/images/'.$name.'.jpg'; 
    $data = get_data($url); 
    file_put_contents('photos/'.$name.'.jpg', $data); 
} 
+0

실제로 foreach 루프를 작동 시켰습니다. 코딩을 조금만 움직여야했지만, 당신의 코드가 작동하고 많이 있습니다. 덕분에 청소기! – Dizzi