2011-12-07 7 views
0

나는 간단한 화면 긁기 작업을하기 위해 simpleHtmlDom을 사용하고 있습니다. 제품 가격을 잡는 데 몇 가지 문제가 있습니다. 때로는 제대로 작동하지 못하는 경우도 있습니다. 또한, 때로는 여러 가지 가격을 받고 있습니다 ... 예를 들어 웹 사이트가 "정상적으로 $ 100 ... 지금 $ 79.99"와 같은 것을 말합니다. 거기에 어떤 제안이 있습니까? 현재,이를 사용하고 있습니다 : 나는에서 가격을 잡아하는 방법에 대한 아무 생각이PHP dom scraping - 제품 가격을 잡는 가장 좋은 방법

$prices = array(); 
$prices[] = $html->find("[class*=price]", 0)->innertext; 
$prices[] = $html->find("[class*=msrp]", 0)->innertext; 
$prices[] = $html->find("[id*=price]", 0)->innertext; 
$prices[] = $html->find("[id*=msrp]", 0)->innertext; 
$prices[] = $html->find("[name*=price]", 0)->innertext; 
$prices[] = $html->find("[name*=msrp]", 0)->innertext; 

하나의 웹 사이트입니다 빅토리아 시크릿은 .... 그냥 무작위로 HTML에 주위에 떠있는 것처럼 가격이 보입니다.

+0

특별한 질문이 있으십니까? 우리는 가능한 모든 마크 업을 위해 모든 솔루션에 맞는 한 가지 크기를 생각해 낼 수 없습니다. PHP로 HTML을 파싱하는 것에 대한 정보는 http://stackoverflow.com/questions/3577641/how-to-parse-and-process-html-with-php를 참고하십시오. – Gordon

+0

사람들이 올바른 가격을 얻을뿐만 아니라 제품 가격을 얻기 위해 어떤 방법을 사용하고 있는지보고 싶습니다. 나는 이것에 "하나의 해결책"이 없다는 것을 알지만, 현재 내가하고있는 것보다 더 나은 것이 있어야합니다. – Stanley

답변

1

먼저 simplehtmldom을 사용하지 마십시오. 내장 된 dom 함수 또는이 함수를 기반으로하는 라이브러리를 사용하십시오. 페이지에서 모든 가격을 추출하려면 다음과 같이 시도하십시오.

$html = "<html><body>normally $100... now $79.99</body></html>"; 
$dom = new DOMDocument(); 
$dom->loadHTML($html); 
$xpath = new DomXpath($dom); 

foreach($xpath->query('//text()[contains(.,"$")]') as $node){ 
    preg_match_all('/(\$[\d,.]+)/', $node->nodeValue, $m); 
    print_r($m); 
} 
관련 문제