PHP xpath 추출 웹 데이터 내용 코드 분석
DOMDocument,DOMXpath,loadHtml 초기 화 는 일반적으로 많은 경 고 를 보 내지 만 사용 에 영향 을 주지 않 습 니 다.@으로 오 류 를 차단 합 니 다.
/**
* DOMXpath
*
* @param [type] $content
* @param [array] $pathinfo
*
* @return void
*/
private function _createXpathObj($content, $patinfo)
{
// xpath , xpath
if (!$this->_existsXpathParse($patinfo)) {
return;
}
try {
$dom = new \DOMDocument();
@$dom->loadHtml($content);
$dom->normalize();
$xpath = new \DOMXpath($dom);
$this->xpathObj = $xpath;
} catch (\Exception $e) {
getService('logger')->warning('Parse html fail', ['content' => $content]);
}
}
그 중$node 는 DOMElement 대상 입 니 다.
/**
* Xpath
*
* @param [type] $pat
*
* @return string
*/
private function _getXpathField($pat)
{
$objs = $this->xpathObj->query($pat);
if ($objs->length > 0) {
$node = $objs->item(0);
$outerHTML = $node->ownerDocument->saveHTML($node);
return trim($outerHTML);
# innerhtml
//$innerHTML = '';
//foreach ($node->childNodes as $childNode){
// $innerHTML .= $childNode->ownerDocument->saveHTML($childNode);
//}
//return $innerHTML;
#
//return $node->textContent; //$node->nodeValue;
}
return '';
}
예시
<?php
$dom = new DOMDocument('1.0','UTF-8');
$dom->loadHTML('<html><body><div><p>p1</p><p>p2</p></div></body></html>');
$node = $dom->getElementsByTagName('div')->item(0);
$outerHTML = $node->ownerDocument->saveHTML($node);
$innerHTML = '';
foreach ($node->childNodes as $childNode){
$innerHTML .= $childNode->ownerDocument->saveHTML($childNode);
}
echo '<h2>outerHTML: </h2>';
echo htmlspecialchars($outerHTML);
echo '<h2>innerHTML: </h2>';
echo htmlspecialchars($innerHTML);
?>
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
laravel에 yo에서 angularJs&coffeescript를 사용할 수 있도록 한다.먼저 yo 명령을 사용할 수 있어야하므로 아래에서 설치 global에 설치한 곳에서 laravel의 프로젝트 루트로 이동. 클라이언트 코드를 관리하는 디렉토리를 만들고 이동합니다. 클라이언트 환경 만들기 이것으로 히...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.