2011-12-02 8 views
0

HTML 페이지에서 일부 내용을 읽어야합니다. simple_html_dom을 테스트했지만, 내가 필요로하는 용도로는 사용할 수 없습니다.어디에서 DOM 파서를 찾을 수 있습니까?

나는이 (simple_html_dom에 따라 pseaudo 구문) 같은 것을 필요 : 나는 이렇게 많은 방법으로 simple_html_dom을 테스트했습니다

$html = file_get_contents($url); 
$html_obj = parse_html($html); 

$title = $html_obj->get('title'); 
$meta1 = $html_obj->get('meta[name=description]', 'innertext']; //text only 
$meta2 = $html_obj->get('meta[name=keywords]', 'innertext']; // text only 
$content = $html_obj->get('div[id=section_a]', outerText); //html code 

을, 오직 내가 필요한 부분을 얻을 수 있었다. 단순히 "단순하지"않습니다.

또한 PHP DOMDocument::loadHTML을 테스트했지만 인라인 <script>을 처리 할 때 문제가 발생합니다.

jQuery 에서처럼 콘텐츠를 쉽게 가져올 수있는 PHP 라이브러리가 있습니까?

<script language="javascript" type="text/javascript"> 
     <!-- 
     if (window.adgroupid == undefined) { 
      window.adgroupid = Math.round(Math.random()*100000); 
     } 
     document.write('<scr'+'ipt language="javascript1.1" type="text/javascript" src="http://adserver.adtech.de/addyn|3.0|994|3159100|0|-1|size=980x150|ADTECH;loc=100;target=_blank;key=startside,kvinner, kvinnesak, bryllup, graviditet, mamma, kosmetikk, markedsplass, dagbok, feminisme;grp='+window.adgroupid+';misc='+new Date().getTime()+'"></scri'+'pt>'); 
     //--> 
     </script> 

내가 변경하더라도 <scr'+'ipt<script에 자바 스크립트 코드 나 무효 제공 : 내 문제의

업데이트

하나는 추가 기관에서 자바 스크립트 타사의 작품이다.

+0

서버와 같은 JQuery와 통해 HTML을 조작 할 수 있습니다 측면 DOM 라이브러리는 일반적으로 jQuery가 사용하는 의사 CSS 선택이 아닌 XPath를 사용합니다. 나는 선택이'/ meta [@ name = "description"]' – zzzzBov

+1

과 같이 끝날 것이라고 생각합니다. '문제'에 대해 자세히 설명해 주시겠습니까? –

+0

@Digital Precision, 내 업데이트 된 텍스트 참조 – Steven

답변

2

당신은 DOMXPath에있는 DOMDocument를 사용할 수 있습니다 ..

<?php 
$DOMDocument = new DOMDocument(); 
//libxml_use_internal_errors (true) ; 
$DOMDocument->loadHTMLFile ('http://www.iconfinder.com') ; 
$XPath = new DOMXPath($DOMDocument); 

$title = $DOMDocument->getElementsByTagName('title')->item(0)->nodeValue; 
echo $title ; 

#$desc = $XPath->query('//meta[@name=description]')->item(0)->getAttribute ('content'); 
#$keywords = $XPath->query('//meta[@name=keywords]')->item(0)->getAttribute('content'); 
#$content = $XPath->query('//div[@id=section_a]')->item(0)->nodeValue; 
+0

감사합니다 - 이것을 시도합니다! – Steven

+0

업데이트 된 질문보기. 인라인 자바 스크립트 때문에 HTML 코드를 작성할 수 없습니다. 내가 어떻게 고칠 수 있는지 아십니까? – Steven

1

PHPQuery이 (http://code.google.com/p/phpquery/)는 구문

+0

+1 나는 과거에 PHPQuery를 사용해 왔으며 친숙 함을 좋아합니다. – Sampson

관련 문제