<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개 / 댓글 2개
채택된 답변
+20 포인트
2015-10-01 (목) 20:14:44
파싱할 사이트의 meta 정보가 항상 위와같이 제공된다면 아래와 같이 해볼 수 있습니다.
Copy
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() 함수로는 '파싱할 사이트 주소'를 몰라서 테스트해 보지 못했습니다.
답변에 대한 댓글 2개
2015-10-02 (금) 16:25:22
2015-10-02 (금) 18:52:56
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]
그리고 $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]
답변을 작성하려면 로그인이 필요합니다.
<div class='rating' role='img' tabindex='-1' aria-label='별 3개 반, 477개의 평가'>
이부분 파싱을 하는데 계속해서
477개의 평가
만 값을 가져옵니다. 한번만 봐주시면 감사합니다.
foreach($html->find('div.rating') as $element){
$score = $element->plaintext;
}