我对每个网址中没有对象的每个网址都有计数。所以我现在正试图收集第2部分中的每个节点值。
我显然做错了什么但需要一些指导
$items = array();
$query = "SELECT * FROM `urls`";
if( $result = mysqli_query($sql,$query));
{
// Return the number of rows in result set
$rowcount=mysqli_num_rows($result);
while ($row = $result->fetch_assoc()) {
$items[] = $row;
}
}
echo '<pre>';
print_r($items);
// $product = array();
echo $rowcount;
for ($x=0; $x<$rowcount; $x++){
$scrapeurl[$x] = $items[$x][url];
echo $scrapeurl[$x];
$xpath[$x] = new XPATH($scrapeurl[$x]);
$urls[$x] = $xpath[$x]->query("//div[@class='infodata']/strong/a[contains(@id,'test_title')]/@href");
$count[$x] = $urls[$x]->length;
$data = array();
for ($i=0; $i<$count[$x]; $i++){
$data[$i]['url'] = $urls[$x]->item($i)->nodeValue;
$data[] = $data[$i]['url'];
}
echo '<pre>';
print_r($data);
答案 0 :(得分:1)
有点迟到道歉但解决了这个问题。也许太累了,但归结为几个问题。
不要总是相信浏览器在HTML中呈现的内容。看看来源!我发现that tbody as an example is filled into HTML by Firefox至少在现实中来源不同,所以我永远不会打到正确的节点。
在循环中循环 - 要记住在循环中有时你必须再次循环以向下钻取到正确的结果......
$data = array();
foreach($urls as $node){
foreach($node->childNodes as $child) {
$data[] = array($child->nodeName => $child->nodeValue);
}
}
$data = new RecursiveIteratorIterator(new RecursiveArrayIterator($data));
$data = iterator_to_array($data,false);