2012-10-18 2 views
0

가능한 중복 :
PHP HTML DomDocument getElementById problems

I 추출하기 위해 노력하고있어 PHP에서 Google 검색의 정보를 검색하고 문제없이 검색 URL을 읽을 수 있지만 그 중에서 아무것도 얻는 것이 완전히 다른 문제입니다. 수많은 게시물 및 적용 PHP의 문서를 읽은 후, 나는 내가 찾고있어 ID와 태그의 error_log하여 HTML에 있는지 확인한 다음

// get large panoramas of montana 
$url = 'http://www.google.com/search?q=montana+panorama&tbm=isch&biw=1408&bih=409'; 
$html = file_get_contents($url); 
// was getting tons of "entity parse" errors, so added 
$html = htmlentities($html, ENT_COMPAT, 'UTF-8', true); // tried false as well 

$doc = new DOMDocument(); 
//$doc->strictErrorChecking = false; // tried both true and false here, same result 
$result = $doc->loadHTML($html); 

//echo $doc->saveHTML(); this shows that the tags I'm looking for are in fact in $doc 

if ($result === true) 
{ 
    var_dump($result); // prints 'true' 
    $tags = $doc->getElementById('center_col'); 
    $tags = $doc->getElementsByTagName('td'); 
    var_dump($tags); // previous 2 lines both print NULL 
} 

함께했다 ($ HTML)과의 $ doc-> SaveHTNL()을 가진 파싱 된 문서. 누구든지 내가 뭘 잘못하고 있는지 알아?

편집 :

도움을 주셔서 감사합니다 모든,하지만 난 DOMDocument를 가진 벽에 부딪했습니다. 어떤 문서 또는 다른 스레드의 아무 것도 Google 이미지 쿼리와 함께 작동하지 않습니다. 여기 내가 시도한 바가 있습니다 :

@ Jon 링크를 보면서 거기에있는 모든 제안을 시도하고 getElementByID 워드 프로세서를 살펴보고 거기에있는 모든 주석도 읽었습니다. 여전히 빈 결과 집합을 얻습니다. NULL보다 좋지만 많이는 아닙니다.

$xpath = new DOMXPath($doc); 
$ccol = $xpath->query("//*[@id='center_col']"); 

같은 결과 빈 세트 :

은 내가 XPath는 트릭을 시도했다.

파일을 읽은 직후에 error_log ($ html)를 작성했으며 문서에 doctype ""이 있습니다. 그래서 그렇지 않습니다.

또한 "carl2088"사용자는 "내 경험으로 볼 때 HTML 문서를로드 한 경우 getElementById가 아무런 설정없이 정상적으로 작동하는 것 같습니다." Google 이미지 쿼리의 경우가 아니라면 나타납니다.

절망, 나는 어떤 이상한 이유로 초기의 error_log ($ html로) 후 사라집니다 있는지

echo count(explode('center_col', $html)) 

을 시도했다. 그것은 분명히 있습니다. 문자열은 4 개의 덩어리로 나뉘어져 있습니다.

내 버전의 PHP (5.3.15)를 2012 년 8 월 25 일에 컴파일 했으므로 getElementByID를 지원하기에는 너무 오래된 버전이 아닙니다.

어제 이전에, 나는 정보를 얻기 위해 극단적으로 추악한 "폭발"시리즈를 사용하고 있었고, 무시 무시한 코드이지만 쓰기에는 45 분이 걸렸습니다.

저는 실제로 "해체하는"해킹을하고 싶지만 5 시간 동안 아무것도 얻지 못하면 45 분이 걸리므로 올바르게 작동하지 않게됩니다.

DOMDocument를 사용해 본 경험이있는 사람이 있다면 시도해 볼 수있는 몇 가지 추가 트릭이 있다면 많은 도움이 될 것입니다.경우이 문제보다

+0

'$ tags'의 첫 번째 출력을 덮어 쓰고 있습니다. var_dump 별도로 –

+0

난 정말 아니에요, 난 그냥 각 시도했다는 방법을 보여 모두 포함되어 있습니다. – user1755989

답변

0

당신은 예를 자바 스크립트 getElementByIdgetElementsByTagName를 사용하는

$tags = $doc->getElementById('center_col'); 
    $tags = $doc->getElementsByTagName('td'); 
+1

이것은 무엇을 의미합니까? 이들은 PHP 함수입니다 ... – lonesomeday

+0

이것은 자바 스크립트가 아닌 PHP 질문입니다. – user1755989