【发布时间】:2017-02-28 06:25:00
【问题描述】:
我有一个抓取数据的代码-
$doc = new DOMDocument();
$internalErrors = libxml_use_internal_errors(true);
$doc->loadHTMLFile($url);
// Restore error level
libxml_use_internal_errors($internalErrors);
$xpath = new DOMXpath($doc);
$result=array();
$link = $xpath->query($linkPath);
$title = $xpath->query($titlePath);
$desc = $xpath->query($descPath);
for ($i=0; $i < $link->length; $i++) {
if (!is_null($link)) {
$result['link'][] = $link[$i]->getAttribute('href');
}
if (!is_null($title)) {
$str = $title[0]->nodeValue;
$result['title'][] = $title[$i]->nodeValue;
}
if (!is_null($desc)) {
$str = $desc[0]->nodeValue;
$result['desc'][] = $desc[$i]->nodeValue;
}
echo "<br> ----------------";
}
print_r($result);
结果如下:
<br> ----------------
<br> ----------------
<br> ----------------
<br> ----------------
<br> ----------------
Array
(
[link] => Array
(
[0] => http://1.com
[1] => http://2.com
[2] => http://3.com
)
[title] => Array
(
[0] => Lorem ipsum dolor sit amet
[1] => Lorem ipsum dolor sit amet
[2] => Lorem ipsum dolor sit amet
)
[desc] => Array
(
[0] => Lorem ipsum dolor sit amet
[1] => Lorem ipsum dolor sit amet
[2] => Lorem ipsum dolor sit amet
)
)
但我想要这样的结果:
Array
(
[0] => Array
(
[link] => http://1.com
[title] => Lorem ipsum dolor sit amet
[desc] => Lorem ipsum dolor sit amet
)
<br> ----------------
[1] => Array
(
[link] => http://2.com
[title] => Lorem ipsum dolor sit amet
[desc] => Lorem ipsum dolor sit amet
)
<br> ----------------
[2] => Array
(
[link] => http://3.com
[title] => Lorem ipsum dolor sit amet
[desc] => Lorem ipsum dolor sit amet
)
<br> ----------------
)
我使用$result['field'][],如果使用result['field'],则循环时只获得最后一行。
我不知道如何像以前的格式一样保存数据。 我需要这样的数组显示,因为每个数组都是新闻。
【问题讨论】:
标签: php arrays json web-crawler