0

我想使用简单的 html dom 引用以下类

但是有 2 节课

class="price"

另一个似乎是class=" price"

使用此代码似乎找不到它

foreach ($html1->find('[class= price ]/text()',0) as $price_data2)

相关页面的来源在这里

http://www.amazon.com/Likeable-Social-Media-Irresistible-ebook/dp/B00511ONPG/ref=tmm_kin_title_0?ie=UTF8&qid=1367741120&sr=8-1

4

2 回答 2

0

逐字查询类属性值的示例DOMDocument(周围有空格):

// configuration
libxml_use_internal_errors(true);

// input
$url = 'http://www.amazon.com/Likeable-Social-Media-Irresistible-ebook/dp/B00511ONPG/ref=tmm_kin_title_0?ie=UTF8&qid=1367741120&sr=8-1';

// processing
$doc = new DOMDocument();
$doc->loadHTMLFile($url);
$xpath = new DOMXPath($doc);
$prices  = $xpath->query("//*[@class=' price ']/text()");

// output
foreach($prices as $index => $price) {
    printf("%d: %s\n", $index, trim($price->textContent));
}

输出:

0: $14.81
1: $18.38
2: $11.58
3: --
4: 
5: 

请注意,您提供的 URL 包含无效的 HTML。因此,simpledom 解析器可能会使用提供的数据产生不同的结果(或根本不起作用)。这对于我在这里使用的对象同样适用DOMDocument,但是,它建立在相当稳定的 libxml 库之上(不仅用于 PHP 世界,也用于许多其他世界)并且它还有一个recovery属性允许进一步控制。

于 2013-05-05T09:00:12.780 回答
0

您应该能够使用:

$html->find('*[class*=price]/text()')

我不喜欢那样,/text()因为它不是真正的 CSS。

另请注意,您需要,0在迭代时省略foreach.

于 2013-05-06T00:44:47.510 回答