我使用Simple HTML DOM解析器来抓取数据并遇到问题:如何收集HTLM5微数据中包含的数据。
例如,<meta itemprop="title" content="Charlie and the Chocolate Factory">
如何使用Simple HTML DOM解析器获取itemprop以及元属性的内容?
答案 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");