2012-08-04 2 views
0

웹 페이지에서 이미지를 추출하려고합니다.URL에서 이미지 추출 - jpeg 전용 - 다른 접근

나는 follolwing 코드를 사용하고 있지만 (예를 들어 사용 이베이 페이지) 이것 또한

$html = "http://www.ebay.co.uk/itm/190706137456?_trkparms=clkid%3D1088812801530482649&_qi=RTM944765"; 
$dom = new domDocument; 
@$dom->loadHTML($html); 
$dom->preserveWhiteSpace = false; 
$images = $dom->getElementsByTagName('img'); 
foreach ($images as $image) { 
echo $image->getAttribute('src'); 
} 

그냥 다음 JPG 이미지를 추출하고, 할 수있다가 일부가 내가 알고 있지만, 그것은 더 출력을 제공하지 또한 특정 높이/너비 크기 이상의 이미지 만?

최근에 simple_html_dom을 사용해 왔지만 시간이 많이 걸리고 느려집니다.

예를 들어 'img'와 'src'를 찾는 대신 'http : //...etc 등'앞에있는 모든 것을 '.jpg'끝내기 만하면됩니다.

답변

0

$ dom-> loadHTML 대신 $ dom-> loadHTMLFile()을 사용해보십시오. 그래서 ...

$html = "http://www.ebay.co.uk/itm/190706137456?_trkparms=clkid%3D1088812801530482649&_qi=RTM944765"; 
$dom = new domDocument(); 
$dom->loadHTMLFile($html); 

foreach() 루프에서 이미지 유형을 필터링하고 파일 이름 만 가져올 수 있습니다. 이 같은 시도 :

$images = $dom->getElementsByTagName('img'); 
foreach ($images as $image) { 
    $filename = basename($image->getAttribute('src')); 
    $ext = pathinfo($filename, PATHINFO_EXTENSION); 
    if ($ext == 'jpg') { 
    echo $filename . '<br>'; 
    } 
} 

또한 이미지의 폭과 높이에 의해 필터링 할 수 있습니다,하지만 너비와 높이를 찾는 방법과 이상한 것으로 보인다. 당신은

$width = $image->getAttribute('width'); 
$height = $image->getAttribute('height'); 

... 그것은 폭 = "xxx는"높이 = "YYY"을 뱉어 것입니다 ... 이러한 속성을 사용하여 상상 것 ...하지만 그렇지 않습니다. 대신 스타일 속성이 필요합니다. 그래서 그걸 명심하십시오. 즉, 너비와 높이에 대해서도 위와 비슷한 솔루션을 사용할 수 있습니다. 좋아요 :

$images = $dom->getElementsByTagName('img'); 
foreach ($images as $image) { 
    $filename = basename($image->getAttribute('src')); 
    $width = $image->getAttribute('width'); 
    $height = $image->getAttribute('height'); 
    $ext = pathinfo($filename, PATHINFO_EXTENSION); 
    if ($ext == 'jpg' && ($width > 20 && $height > 10)) { 
     echo $filename . "($width x $height)" . '<br>'; 
    } 
} 

잘하면 그게 효과가있어. 필요에 따라 모든 것이 있습니다.

$html = "http://www.ebay.co.uk/itm/190706137456?_trkparms=clkid%3D1088812801530482649&_qi=RTM944765"; 
$dom = new domDocument(); 
$dom->loadHTMLFile($html); 
$dom->preserveWhiteSpace = false; 
$images = $dom->getElementsByTagName('img'); 
foreach ($images as $image) { 
    $filename = basename($image->getAttribute('src')); 
    $width = $image->getAttribute('width'); 
    $height = $image->getAttribute('height'); 
    $ext = pathinfo($filename, PATHINFO_EXTENSION); 
    if ($ext == 'jpg' && ($width > 20 && $height > 10)) { 
     echo $filename . "($width x $height)" . '<br>'; 
    } 
}