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;

価格を取得する方法がわからない Web サイトの 1 つに、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 に答える