以下课程我想用简单的html dom
来引用但是有2个班级
是
class="price"
另一个似乎是class=" price"
使用此代码似乎找不到它
foreach ($html1->find('[class= price ]/text()',0) as $price_data2)
相关网页的来源是
答案 0 :(得分: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:
请注意,您提供的网址包含无效的HTML。因此,简单解析器可能会与提供的数据产生不同的结果(或根本不起作用)。对于我在这里使用的DOMDocument
对象同样如此,但是,它建立在非常稳定的libxml库之上(不仅用在PHP世界中,而且在很多其他世界中也是如此)它也是具有recovery
属性,允许进一步控制。
答案 1 :(得分:0)
你应该可以使用:
$html->find('*[class*=price]/text()')
我不喜欢那个/text()
,因为它不是真正的CSS。
另请注意,在使用,0
进行迭代时,您需要忽略foreach
。