2013-04-09 2 views
2

기본적으로 ALL DOMDocument를 사용하는 모든 웹 사이트의 이미지를 가져오고 싶습니다. 하지만 아직 내가 모르는 몇 가지 이유 때문에 내 HTML을로드 할 수 없습니다.DOMDocument를 사용하여 웹 사이트의 모든 이미지를 긁어 내기

아무 것도 인쇄되지 않습니다. 또는 코드에 문제가 있습니까?

+0

당신이 오류 메시지가 그나마 이유는 아마도이 라인'@ $ dom-> loadHTML의 ($ URL)입니다. –

+0

나는 오래 전에 그것을 제거했지만 아직 결과가 없습니다 ... – Leonid

+0

'$ dom-> loadHTML()'이 html을 기대하기 때문에 당신은 결과를 얻지 못합니다. 당신은 그것에게 URL을주고, 당신은 먼저 구문 분석하고자하는 페이지의 html을 얻을 필요가있다. 'file_get_contents()'를 사용하면된다. (답변보기) –

답변

12

You don't get a result because $dom->loadHTML() expects html. You give it an url, you first need to get the html of the page you want to parse. You can use file_get_contents() for that.

내 이미지 잡기 클래스에서 이것을 사용했습니다. 나를 위해 잘 작동합니다. PHP로는 '@'그 함수에 대한 모든 오류 메시지를 숨 깁니다`;

$html = file_get_contents('http://www.google.com/'); 
$dom = new domDocument; 
$dom->loadHTML($html); 
$dom->preserveWhiteSpace = false; 
$images = $dom->getElementsByTagName('img'); 
foreach ($images as $image) { 
    echo $image->getAttribute('src'); 
} 
+0

개체 클래스에 특성 클래스가 다시 정의되었습니다. '$ dom = 새 DOMDocument; \t \t $ htmls = file_get_contents ("http://philcooke.com/inspiration-happens-but-the-best-ideas-take-time/"); $ dom-> loadHTML ($ htmls); ' – Leonid

+0

당신의 대답은 거의 옳았습니다. '$ dom-> loadHTML ($ html)'앞에 "@"문자를 추가하면됩니다. – Leonid

+0

'$ dom-> loadHTML ($ html)'앞에 '@'를 붙이면 오류를 억제 할 수 있습니다. html을 먼저 청소하십시오. '''$ tidy = tidy_parse_string ($ html); $ html = $ tidy-> html() -> value;'''그러나 이것은 너무 많을 수도 있습니다. –