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

Php 用于微数据的简单HTML DOM解析器,php,simple-html-dom,microdata,Php,Simple Html Dom,Microdata,我正在使用简单的HTMLDOM解析器刮取数据,并遇到了一个问题:如何收集HTLM5微数据中包含的数据 例如, 如何使用简单的HTML DOM解析器获取itemprop以及元属性的内容?问题是如何使用itemprop属性迭代元素?如果是: foreach($doc->find('[itemprop]') as $el){ echo $el->itemprop . "\n"; echo $el->content . "\n"; } 你可以试试。我没有跟上规范的变化,但它应

我正在使用简单的HTMLDOM解析器刮取数据,并遇到了一个问题:如何收集HTLM5微数据中包含的数据

例如,


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

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

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

你可以试试。我没有跟上规范的变化,但它应该涵盖您的用例,如果与当前规范不符,您可以提交问题。

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

例如:


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

您可以尝试使用PHP的微数据解析器库。您可以直接向它输入HTML字符串,也可以在简单的HTML Dom解析器实例上调用
getDocument()
,从中获取
DomDocument
实例,然后使用该字符串向
microdata Parser
输入,并以数组、对象或JSON的形式获取输出


或者,如果你想自己重新发明轮子,你可以看看(如果你不把它转换成JSON,可以是一个PHP数组或一个对象)。如果您希望所有内容都具有正确的结构,那么简单地查找
itemprop
属性可能不是最好的解决方案。

您是否尝试过使用jquery提取您需要的内容?您可以使用jquery(element).attr()。示例:
var item=$('meta[itemprop=Title]').attr('content');控制台日志(项目)我更喜欢使用相同的框架进行所有解析。如果你不能使用jquery,那么你可以坚持使用简单的HTMLDOM解析器。不管怎样,你都可以在手册和它的详细文档中阅读它。下面的代码,
$html->find('meta[itemprop]',0)
html->find('meta[content]”,0)工作?微数据!=元数据。微数据可以使用
表示,但也可以使用其他标记。另外,
get\u meta\u tags()
处停止解析,而微数据通常出现在正文中。
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;
        }
}
get_meta_tags("url");