2010-04-29 2 views

답변

0

curl을 사용하여 원하는 URL에서 HTML을 가져온 다음 결과를 구문 분석하여 원하는 div를 "잡아"올릴 수 있습니다.

9

PHP Simple DOM Parser을 사용하면 페이지를 잡고 쉽게 선택할 수 있습니다.

한 쉽게 :

$html = file_get_html('http://www.google.com/'); 
$ret = $html->find('div[id=foo]'); 

문서 here.

http://www.freeoh.net/의 헤더를 가져 오려면 다음 코드를 사용하십시오. 다음 스크립트와 동일한 폴더에 simple_html_dom.php와 page.txt라는 파일 (스크립트에 읽기 및 쓰기 권한이 있는지 확인)을 배치해야합니다. (난 당신이 귀하의 질문에 그것을 언급 한 바와 같이 이미, 컬이 활성화되어 있으리라 믿고있어.) I 페이지를 잡아 컬을 사용하고 그것을 어딘가에 저장하는 데 필요한 때문에

<?php 

include 'simple_html_dom.php'; 

$curl = curl_init(); 
curl_setopt ($curl, CURLOPT_URL, "http://www.freeoh.net/"); 
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($curl, CURLOPT_USERAGENT, "Mozilla/5.0 (compatible; MSIE 5.01; Windows NT 5.0)"); 
curl_setopt($curl, CURLOPT_AUTOREFERER, 1); 
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1); 
curl_setopt($curl, CURLOPT_REFERER, "http://www.freeoh.net/"); 

$result = curl_exec ($curl); 
curl_close ($curl); 
//write contents of $result to file 
$File = "page.txt"; 
$fh = fopen($File, 'w') or die("can't open file"); 
fwrite($fh, $result); 
fclose($fh); 
//turn file into dom object 
$page = file_get_html("page.txt"); 
$header = $page->find("div", 1); 
echo $header; 

?> 

그것은 조금 해키 있도록 PHP 간단한 HTML Dom 파서가 제대로 파싱 할 수는 있지만 작동합니다.

+0

이는 예를 들어이 실행 페이지를 나누기 : find ('div [id = header]'); ?> – James

+0

내 대답을 편집했습니다. 사이트에서 헤더를 가져 오려면 코드가 작동하고 있어야합니다. –

+2

정규식을 사용하지 않는 경우 +1. – SLaks

0

jorge가 말한 것만 긁어서.
여전히 Curl 및 regex를 사용해야합니다.

+2

정규식은 신뢰할 수 없습니다. DOM 파서는 훨씬 더 신뢰할 수 있습니다. – alex

관련 문제