循环使用xpath结果


looping through xpath results

  1. 我去了数据库,创建了一个url数组
  2. 然后我遍历数组并使用xpath告诉我每个url有多少链接
  3. 这就是我头疼的地方

我对每个url中的对象数量进行了计数。因此,我现在尝试收集第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);

道歉有点晚,但解决了问题。也许太累了,但归根结底还是有几个问题。

  1. 不要总是相信浏览器在HTML中呈现的内容。看看来源!我发现tbody作为一个例子被Firefox填充到HTML中——至少在现实中,源代码是不同的,所以我永远不会找到正确的节点。

  2. 循环中的循环——记住在循环中的时候,有时你必须再次循环才能深入到正确的结果。。。。。。

    $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);