PHPQuery没有将元数据提取到Array中

时间:2012-12-20 09:59:48

标签: php web-scraping phpquery

我正在尝试使用PHPQuery(https://code.google.com/p/phpquery/)从我的网站上抓取数据。 我想从页面中提取元信息。

这是我到目前为止所尝试的内容:

$html = phpQuery::newDocumentHTML($file, $charset = 'utf-8');

$MetaItems = [];
foreach (pq('meta') as $keys) {
    $names = trim(strtolower(pq($keys)->attr('name')));
    if ($names !== null && $names !== '') {
        array_push($MetaItems, $names);
    }
}

for ($i=0; $i < count($MetaItems); $i++) {
    $test = 'meta[name="' . $MetaItems[$i] . '"]';
    echo pq($test)->html();
}

上图: 在$MetaItems中,我获得了所有元属性name。此数组已正确填充。

但是选择和提取文本不起作用。我如何让上面的代码工作? 感谢。

2 个答案:

答案 0 :(得分:4)

你想要一个名为=&gt;的关联数组;内容,对吗?试试这个:

$metaItems = array();
foreach(pq('meta') as $meta) {
  $key = pq($meta)->attr('name');
  $value = pq($meta)->attr('content');
  $metaItems[$key] = $value;
}

var_dump($metaItems);

答案 1 :(得分:0)

假设您提取的值与您尝试获取的名称属性的值完全相同...我非常确定name属性的值是区分大小写的。你需要删除strtolower和修剪。两者都可能导致问题。我会用这个替换第一部分:

$html = phpQuery::newDocumentHTML($file, $charset = 'utf-8');

$MetaItems = [];
foreach (pq('meta') as $keys) {
    $names = pq($keys)->attr('name');
    if (!empty($names) && trim($names)) {
        array_push($MetaItems, $names);
    }
}

希望有所帮助