php dom scraping - лучший способ узнать цену товара - PullRequest
0 голосов
/ 07 декабря 2011

Я использую 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.

1 Ответ

1 голос
/ 08 декабря 2011

Прежде всего, не используйте 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);
}
...