simple_html_dom 파싱질문입니다.

simple_html_dom 파싱질문입니다.

QA

simple_html_dom 파싱질문입니다.

본문

<meta content="₩5,503" itemprop="price"> <meta content="" itemprop="description"> <span itemprop="seller" itemscope="itemscope" itemtype="http://schema.org/Organization"> <meta content="Android" itemprop="name"> </span> </span> </span> <jsl jsl="$x 1;$t t-nH6Xd1T8X0Y;$x 0;"> <jsl jsl="$x 1;$t t-R7hS--kHwck;$x 0;"> <span jsl="$x 1;" style="display:none" jsan="5.display"></span> </jsl> </jsl> <span>구매 ₩5,503</span> 

 

안드로이드앱정보에 대한 상세내용중에 가격(₩5,503)만 가져올려고 하는데 잘안됩니다.

 

가격만 가져오는 방식아시면 도움좀 부탁드립니다.



이 질문에 댓글 쓰기 :

답변 1

파싱할 사이트의 meta 정보가 항상 위와같이 제공된다면 아래와 같이 해볼 수 있습니다.


include_once('해당경로/simple_html_dom.php');
$html = file_get_html('파싱할 사이트 주소');

foreach($html->find('meta') as $ele){
   if($ele->itemprop == 'price')
      echo $ele->content;
}
//str_get_html 함수로 테스트한 출력결과 : ₩5,503

str_get_html() 함수로는 테스트해 보았지만,

file_get_html() 함수로는 '파싱할 사이트 주소'를 몰라서 테스트해 보지 못했습니다.

 

정말 감사합니다. 죄송한데 하나만 더 여쭈어봐도 될까요
<div class='rating' role='img' tabindex='-1' aria-label='별 3개 반, 477개의 평가'>

이부분 파싱을 하는데 계속해서

477개의 평가

만 값을 가져옵니다. 한번만 봐주시면 감사합니다.

foreach($html->find('div.rating') as $element){
     

    $score = $element->plaintext;
 
}

plaintext 는 엘리먼트 안에 있는(<div>text</div>) 텍스트(text)를 가져오는 인자이므로 div 엘리먼트 내의 속성값을 가져오는 용도로는 사용할 수 없습니다.
그리고 $html->find('div.rating') 를 통해 클래스가 rating인 div 를 찾았으므로 다음과 같이 하셔야  aria-label 의 속성값을 가져올 수 있습니다.


foreach($html->find('div.rating') as $element){
   $score =  $element->attr['aria-label'];
}
echo $score; // 출력결과 : 별 3개 반, 477개의 평가

답변을 작성하시기 전에 로그인 해주세요.
전체 149
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT