用于微数据的简单HTML DOM解析器

时间:2014-04-14 02:30:44

标签: php simple-html-dom microdata

我使用Simple HTML DOM解析器来抓取数据并遇到问题:如何收集HTLM5微数据中包含的数据。

例如,<meta itemprop="title" content="Charlie and the Chocolate Factory">

如何使用Simple HTML DOM解析器获取itemprop以及元属性的内容?

5 个答案:

答案 0 :(得分:3)

问题是如何使用itemprop属性迭代元素?如果是这样的话:

foreach($doc->find('[itemprop]') as $el){
  echo $el->itemprop . "\n";
  echo $el->content . "\n";
}

答案 1 :(得分:1)

一种很好的方法是为页面上的每个itemprop元素使用switch语句。

例如:

foreach($html->find('[itemprop]') as $productDetail){
    switch ($productDetail->itemprop) {
        case 'image':
            $line['imageURL'] = $productDetail->src;
            break;
        case 'price':
            $line['price'] =  $productDetail->plaintext; //note: plaintext not content
            break;
        case 'name':
            $line['name'] =  $productDetail->plaintext;
            break;
        case 'productId':
            $line['productId'] =  $productDetail->content;
            break;
        case 'description':
            $line['description'] =  $productDetail->content;
            break;
        case 'url':
            $line['url'] =  $productDetail->content;
            break;
        default:
            break;
        }
}

答案 2 :(得分:0)

您可以尝试MicrodataPHP。我还没有及时了解规范中的更改,但它应该涵盖您的用例,如果某些内容与当前规范不符,您可以提出问题。

答案 3 :(得分:0)

您可以尝试使用microdata-parser,它是PHP的微数据解析器库。您可以直接用HTML字符串来提供它,也可以在Simple HTML Dom Parser实例上调用getDocument()来获取DomDocument实例,然后用它来填充microdata-parser,并将输出作为数组,对象或JSON。

或者,如果您想自己重新发明轮子,可以看看W3C's Microdata Specification - Converting microdata to JSON(如果不将其转换为JSON,可以是PHP数组或对象)。如果您希望所有事物都具有正确的结构,那么简单地寻找itemprop属性可能不是最佳解决方案。

答案 4 :(得分:-1)

为什么要使用解析器来完成这项工作?使用下面的php函数。

http://php.net/manual/en/function.get-meta-tags.php

get_meta_tags("url");