2013-07-27 3 views
0

내가 curlpreg_match를 사용하여 하나의 웹 사이트 표를 스크랩 할Preg_match가 내부 테이블에서 작동하지 않습니까?

내 URL이 내 컬 내가 하나 개의 테이블을 폐기 할 필요가

$url = 'http://hosts-file.net/?s=Browse&f=EMD';  


     $ch = curl_init(); 
     curl_setopt($ch, CURLOPT_URL,$url); 
     curl_setopt($ch, CURLOPT_HTTPHEADER, Array("User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.15) Gecko/20080623 Firefox/2.0.0.15")); 
     curl_setopt($ch, CURLOPT_NOBODY, false); 
     curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); 
     curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
     $body= curl_exec ($ch); 
     curl_close ($ch); 

http://hosts-file.net/?s=Browse&f=EMD

입니다.

은 내 preg_match 기능은

preg_match_all('/<table class=\"main_normal(.*?)\">(.*?)<\/table>/s',$body,$vv,PREG_SET_ORDER); 

아래에 주어진하지만 그것은 단지

있는 DOMDocument 및 DOMXPath 저에게

+1

html을 긁어 모으려면 dom 구문을 사용하십시오. – DevZer0

+0

제게 어떤 사례라도주세요. –

+0

DOMDocument, DOMXPath, simple_html_dom, phpquery – DevZer0

답변

1

예를 안내하시기 바랍니다 빈 배열을 반환합니다 :

$doc = new DOMDocument(); 
@$doc->loadHTML($body); 
$xpath = new DOMXPath($doc); 
$links = $xpath->query('/html/body/table/tr/td/table/tr/td/table[@class="main_normal"]/tr/td[2]/a[1]/text()'); 
foreach($links as $link) { 
    echo $link->nodeValue."<br/>"; } 

당신은 할 수 있습니다 네 번째 라인을 상대 경로로 바꾸지 만, ficient :

$links = $xpath->query('//table[@class="main_normal"]/tr/td[2]/a[1]/text()'); 
+0

Thanks @Casimir et Hippolyte –

관련 문제