2014-10-17 3 views
-1

URL을 가지고 어떻게 특정 웹 페이지의 소스 코드를 파싱합니까? 저자, 제목, 그리고 마지막으로 수정 된 시점을 소스 코드에서 찾고 싶습니다.주어진 웹 페이지의 소스 파싱하기

제 아이디어는 file_get_contents()로 소스 코드를 파싱하는 것입니다. 그런 다음 저자에게 < 메타 이름 = "author"content = "[...]"> 소스 코드를 살펴본 다음 내용의 내용을 추출합니다. 제목에 대해서는 < 제목> [...] </title>을 찾아 내부에있는 내용을 추출합니다. 마지막으로 수정 된 시점을 찾기 위해 내가 무엇을해야할지 모르겠습니다.

이러한 방식으로 작동합니까? 더 좋은 방법이 있습니까?

+0

. PHP의 [DOM] (http://php.net/manual/en/book.dom.php)은 구문 분석 및 HTML 및 XML 조작을위한 다양한 옵션을 제공합니다. 'file_get_contents' 또는 curl을 사용하여 페이지를 검색 할 수 있습니다. –

+0

제목, 저자 및 마지막으로 수정 된 날짜를 찾고 싶습니다. – cycloidistic

+0

이것은 웹 페이지간에 크게 다릅니다. 구문 분석하려는 페이지 샘플을 제공해야합니다. –

답변

0

file_get_contents를 사용할 수 있습니다. 예를 들어

:

$content = file_get_contents('http://www.external-site.com/page.php'); 

그런 다음 변수 $의 내용은 외부 사이트의 내용을해야합니다.

0

사용 컬 대신 ("allow_url_fopen을"지시문이 거짓이며, 더 유연 때 여전히 작동).

웹 페이지 소스 코드를 구문 분석하려면 DOM 라이브러리를 사용할 수 있지만 HTML 내용을로드하기 전에 libxml 오류 출력을 비활성화해야합니다.

예 : 당신이 당신이 그것을 수행 할 작업에 따라 구문 분석 할 방법

<?php 
$url = 'http://stackoverflow.com/'; 

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, $url); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
$content = curl_exec($ch); 
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE); 
curl_close($ch); 
if($content === null || $httpCode >= 400) { 
    die(); 
} 

libxml_use_internal_errors(true); 
$dom = new DOMDocument(); 
$dom->loadHTML($content); 

$title = null; 
$titleNodes = $dom->getElementsByTagName('title'); 
if($titleNodes->length === 1) { 
    $title = $titleNodes->item(0)->textContent; 
} 
관련 문제