2012-01-02 3 views
0

저는 지역 기상 관측소의 학교/사업 폐쇄 내용을 가져 와서 내 개인 사이트에 결과를 표시하는 개인 프로젝트를 진행하고 있습니다. 사이트가 RSS 피드를 사용하지 않으므로 (슬프게도), PHP 스크랩을 사용하여 페이지의 내용을 가져올 생각 이었지만 특정 ID 요소 만 보여주고 싶습니다. 이것이 가능한가? 내 PHP 코드는PHP 웹 스크랩으로 특정 ID 만 표시 하시겠습니까?

,

<?php 
$url = 'http://website.com'; 
$ch = curl_init($url); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
$output = curl_exec($ch); 
curl_close($ch); 
echo $output; 
?> 

내가 preg_match를 사용하는 생각,하지만 난 구문의 확실하지 않다거나 심지어 올바른 명령 인 경우. 표시하고자하는 ID 요소는 #LeftColumnContent_closings_dg입니다.

+2

DOM 구문 분석은 일반적으로 정규 표현식에 이상 HTML/XML 콘텐츠를 구문 분석하는 선호하는 방법으로 허용됩니다 ... 아이디 = "테스트"를 처음 <h1> 요소의 텍스트를 가져옵니다. xpath 질의와 함께 PHP의 DOMDocument를 사용하여 찾고자하는 특정 정보를 추출하고자 할 것입니다. – rdlowrey

+0

@MarcB OMG 그것은 upvotes의 부하입니다. Canonical은 올바른 단어입니다 ... – rdlowrey

+0

@rdlowrey : 요점은 html + 정규 표현식을 포함하는 모든 질문이 자동 종료되고 해당 대답을 지적해야한다는 것입니다. –

답변

2

다음은 DOMDocument를 사용한 예입니다. 그것은

$html = ' 
<html> 
<body> 
<h1 id="test">test element text</h1> 
<h1>test two</h1> 
</body> 
</html> 
'; 

$dom = new DOMDocument; 
$dom->loadHTML($html); 
$xpath = new DOMXPath($dom); 
$res = $xpath->query('//h1[@id="test"]'); 
if ($res->item(0) !== NULL) { 
    $test = $res->item(0)->nodeValue; 
} 
1

필자가 이런 식으로 큰 성공을 거둔 라이브러리는 PHPQuery : http://code.google.com/p/phpquery/입니다. (위의이 같은)

당신은 기본적으로 다음 수행 문자열로 귀하의 웹 사이트를 얻을 : 예를 들어

phpQuery::newDocument($output); 

$titleElement = pq('title'); 
$title = $titleElement->html(); 

- 제목 요소의 내용을 얻을 것이라고. 이점은 모든 메소드가 jQuery 클래스의 이름을 따서 명명되었으므로 jQuery를 이미 알고 있다면 쉽게 익힐 수 있다는 것이다.

관련 문제