테스트 사이트 - 개발 중인 베타 버전입니다

simple_html_dom 파싱질문입니다. 채택완료

도사1 10년 전 조회 3,419

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

 

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

 

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

댓글을 작성하려면 로그인이 필요합니다.

답변 1개

채택된 답변
+20 포인트
10년 전

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

</font></p><p><font face="Courier New">include_once('해당경로/simple_html_dom.php');</font></p><p><font face="Courier New">$html = file_get_html('파싱할 사이트 주소');</font><font face="Courier New">
</font></p><p><font face="Courier New">foreach($html->find('meta') as $ele){</font></p><p><font face="Courier New">   if($ele->itemprop == 'price')</font></p><p><font face="Courier New">      echo $ele->content;</font></p><p><font face="Courier New">}</font></p><p><font face="Courier New">//str_get_html 함수로 테스트한 출력결과 : <span class="html-attribute-value">₩5,503</span></font></p><p><font face="Courier New">

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

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

 

로그인 후 평가할 수 있습니다

답변에 대한 댓글 2개

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

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

477개의 평가

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

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


$score = $element->plaintext;

}
선우善友
10년 전
plaintext 는 엘리먼트 안에 있는(<div>text</div>) 텍스트(text)를 가져오는 인자이므로 div 엘리먼트 내의 속성값을 가져오는 용도로는 사용할 수 없습니다.
그리고 $html->find('div.rating') 를 통해 클래스가 rating인 div 를 찾았으므로 다음과 같이 하셔야 aria-label 의 속성값을 가져올 수 있습니다.
[code]
foreach($html->find('div.rating') as $element){
$score = $element->attr['aria-label'];
}
echo $score; // 출력결과 : 별 3개 반, 477개의 평가
[/code]

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인