我试图使用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 ++行并再次运行......
感谢任何帮助...
答案 0 :(得分:0)
在{while}循环内插入$e
将解决问题。但它是一个infine循环。所以尝试为while循环提供退出条件,如:while($i < 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++;
}
?>