我需要使用Dom和XPath从电子商务网站中提取特定产品的价格,并将其保存到MySQL数据库。
我试过了
<?php
$html = new DOMDocument();
@$html->loadHtmlFile('http://www.flipkart.com/samsung-galaxy-star-pro-s7262/p/itmdqq6zfh7y7enm?pid=MOBDQ22YUJ8ZFXKW&srno=b_1&ref=0545bfb1-043b-479f-aca2-a468e03f0c34');
$xpath = new DOMXPath( $html );
*$nodelist = $xpath->query("id('topsection')/x:div[3]/x:div[2]/x:div[1]/x:div/x:div[1]/x:div/x:span");*
foreach ($nodelist as $n){
echo $n->nodeValue."\n";
}
?>
此代码适用于获取网址,网页标题等内容。
但是当我尝试使用xpath从特定网址获取价格时,它什么都没有。可能出错了什么?
答案 0 :(得分:0)
由于该网站使用了一些微数据,您可以在查询中使用这些微数据 这样你就不会依赖于标记结构了:
$query = $xpath->query("//*[contains(@itemprop, 'price')]");
//loop over the results accessing the content attribute
foreach ($query as $result) {
var_dump($result->getAttribute('content'));
}
//or
echo sprintf(
"%s %s",
$query->item(0)->getAttribute('content'),
$query->item(1)->getAttribute('content')
);
见http://dev.w3.org/html5/md-LC/&amp; http://schema.org/docs/gs.html了解更多信息: