如何使用Zend_Dom_Query获取元数据

时间:2012-09-27 12:51:01

标签: php zend-framework web-scraping zend-dom-query

使用Zend_Dom_Query,我想从HTML字符串中检索元数据。

检索链接,您可以像这样查询:

$results = $dom->query('a'); //Where $dom is your html string

不幸的是,这似乎不适用于meta

$results = $dom->query('meta'); //doesn't work

如何检索元数据,然后按其“属性”属性进行过滤?

我正在寻找的一个例子:

               public function meta($dom)
{
    $results = $dom->query('meta'); //This is not a correct query (does anyone have an alternative?)
    $links = array();
    foreach ($results as $index => $result) {
        if ($result->getAttribute('property') == 'title') { //find <meta property="title"
            echo $result->getAttribute('content') . '<br />'; //echo the content attribute of the title
        }
    }
    return $results;
}

一旦查询正确,此代码将起作用。但是我想更进一步,直接查询<meta property="title" content="This is the Title" />,而不是检索所有元数据并循环以获得正确的数据。

使用zend_dom_query获取所有元数据或(更重要的是)查询仅接收属性== title的元数据的任何帮助都将受到赞赏。

由于

2 个答案:

答案 0 :(得分:0)

不是有效的CSS选择器中的 元标记 ,因此您必须使用$dom->queryXpath($xPathQuery)方法而不是{{1 }}

可能是这样的:

$dom->query()

我不确定要使用的确切查询字符串,但这是个主意。

Zend_Dom_Query Theory of Operation.

答案 1 :(得分:0)

如果你有url试试这个:


  
    

$ metatagarray = get_meta_tags($ url);
        if(!empty($ metatagarray [“keywords”]))
           $ metakey = $ metatagarray [“keywords”];
        if(!empty($ metatagarray [“description”]))
           $ metadesc = $ metatagarray [“description”];