【问题标题】:PHP DOM parse for multiple pages using while loop loads only single page statement multiple timesPHP DOM使用while循环解析多个页面多次加载单个页面语句
【发布时间】:2017-04-09 10:08:44
【问题描述】:

我正在尝试使用 PHP dom 解析器从论坛站点解析与帖子相关的语句。它在我们插入页面的单个 url 时有效,但是当我们尝试应用 while 循环逻辑时,它有点只打印一个页面多次..

我的代码如下::

<?php
    set_time_limit(3600);
      $i = 1;
      $e = 839304-$i;
     while(true){
    require_once('dom/simple_html_dom.php'); 
$html =file_get_html('http://www.usmleforum.com/files/forum/2017/1/'.$e.'.php');
    foreach ($html->find("tr") as $row) {
    $element = $row->find('td.Text2',0);
    if ($element == null) { continue; }
    $textNode = array_filter($element->nodes, function ($n) {
    return $n->nodetype == 3;        //Text node type, like in jQuery     
});
    if (!empty($textNode)) {
    $text = current($textNode);
    echo $text."<br>"; 
}
}
    $i++;
}
?>

正如结果所示,它只打印第 839303 页的语句,但它打印了多次并且仍然加载......所以很明显这段代码以某种方式跳过了 $i++ 行并再次运行......

感谢任何帮助...

【问题讨论】:

    标签: php mysql web-crawler


    【解决方案1】:

    在 while 循环中插入 $e 将解决问题。但它是一个无限循环。因此,请尝试为 while 循环提供退出条件,例如:while($i &lt; 100) 或其他内容。

     <?php
        set_time_limit(3600);
          $i = 0;
    
         while($i < 10){
         $e = 839303 + $i;
        require_once('dom/simple_html_dom.php'); 
    $html =file_get_html('http://www.usmleforum.com/files/forum/2017/1/'.$e.'.php');
        foreach ($html->find("tr") as $row) {
        $element = $row->find('td.Text2',0);
        if ($element == null) { continue; }
        $textNode = array_filter($element->nodes, function ($n) {
        return $n->nodetype == 3;        //Text node type, like in jQuery     
    });
        if (!empty($textNode)) {
        $text = current($textNode);
        echo $text."<br>"; 
    }
    }
        $i++;
    }
    ?>
    

    【讨论】:

    • 这实际上似乎是解决方案..但是当我运行它来改变它时,它会永远加载而没有 echo 任何东西..你能检查我的代码,可能是什么错误,还有什么......
    • 我在 while loop 和 $e 价值声明 $e = 839303 + $i; 中的代码有所更改;
    • 这次它有效,但它打印每个语句 3 次而不是一次。因此我看到每个语句只打印三次。你认为我对每个循环都有任何误导......
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-12-21
    • 2014-06-03
    • 2013-06-25
    • 1970-01-01
    • 2011-10-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多