0

我正在使用 simpleHtmlDom 进行一些基本的屏幕抓取。不过,我在获取产品价格方面遇到了一些问题。有时我可以让它工作,有时我不能。另外,有时我会得到多个价格……例如,网站上有“通常 100 美元……现在 79.99 美元”之类的东西有什么建议吗?目前,我正在使用这个:

$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;

我不知道如何从中获取价格的一个网站是 Victoria Secret.... 价格看起来只是在随机 HTML 中浮动。

4

1 回答 1

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);
}
于 2011-12-08T00:06:30.380 回答