php dom抓取-获取产品价格的最佳方法

php dom抓取-获取产品价格的最佳方法,php,screen-scraping,simple-html-dom,Php,Screen Scraping,Simple Html Dom,我正在使用simpleHtmlDom做一些基本的屏幕抓取。不过,我在获取产品价格方面遇到了一些问题。有时我能让它工作,有时我不能。而且,有时我会得到多个价格。。。比如说,网站上有类似“通常100美元……现在79.99美元”的东西,有什么建议吗?目前,我正在使用: $prices = array(); $prices[] = $html->find("[class*=price]", 0)->innertext; $prices[] = $html->find("[class*=

我正在使用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;

一个我不知道如何从中获取价格的网站是维多利亚秘密。。。。价格看起来只是在随机HTML中浮动。

首先,不要使用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);
}
$html=“通常是$100…现在是$79.99”;
$dom=新的DOMDocument();
$dom->loadHTML($html);
$xpath=newdomxpath($dom);
foreach($xpath->query('//text()[包含(,“$”))作为$node){
preg\u match\u all('/(\$[\d,.]+)/',$node->nodeValue,$m);
印刷费(百万美元);
}

您有什么特别的问题吗?我们无法为任何可能的标记提供一个一刀切的解决方案。看看关于用PHP解析HTML的一些技巧。我想看看人们用什么方法来获取产品价格以及获取正确的价格。我意识到没有一个“单一的解决方案”,但肯定有比我现在做的更好的东西。