Php 用于微数据的简单HTML DOM解析器
我正在使用简单的HTMLDOM解析器刮取数据,并遇到了一个问题:如何收集HTLM5微数据中包含的数据 例如,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"; } 你可以试试。我没有跟上规范的变化,但它应
如何使用简单的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");