【问题标题】:how to parse page numbers using Simple HTML DOM如何使用简单的 HTML DOM 解析页码
【发布时间】:2015-05-03 05:34:46
【问题描述】:
<?php 
define('DB_SERVER', 'localhost');
define('DB_USERNAME', 'root');
define('DB_PASSWORD', 'pass');
define('DB_DATABASE', 'table');
$mysqli = new mysqli(DB_SERVER, DB_USERNAME,DB_PASSWORD,DB_DATABASE);
if (mysqli_connect_errno()) {
printf("Connect failed: %s\n", mysqli_connect_error());
exit();
}

include 'simple_html_dom.php';
$startpage=2;
$endpage=8;
for($i=$startpage;$i<=$endpage;$i++){
$html = file_get_html("http://some site.com/page=$i");
}

foreach($html->find("div.tt-name") as $title2)
{
$title[]=  $mysqli->real_escape_string(trim($title2->plaintext));
echo $title2->plaintext.'<br>';
}

?>

我想解析页码,例如从 page=2 到 page=8 我想从所有这些页面中获取数据,例如 2,3,4,5,6,7,8 但现在它只显示 page= 8..我错过了什么?

【问题讨论】:

  • 你的for($i=$startpage;$i&lt;=$endpage;$i++) 区块关闭得太早了

标签: php html parsing dom


【解决方案1】:

解析在这里是错误的词,但让我们忽略它。您的问题是您不了解循环的概念。

运行此代码:

for($i=0; $i<10; $i++)
{
   $y = $i;
}
echo $y . '<br/>';

您会注意到要打印的唯一值是 9。为什么?因为循环的每次迭代都会覆盖变量中的值。

如果你想对每个值而不是最后一个值做某事,那么将使用该值的代码放入循环中:

for($i=0; $i<10; $i++)
{
   $y = $i;
   echo $y . '<br/>';
}

因此,对于您的代码:

for($i=$startpage;$i<=$endpage;$i++)
{
  $html = file_get_html("http://some site.com/page=$i");
  foreach($html->find("div.tt-name") as $title2)
  {
    $title[]=  $mysqli->real_escape_string(trim($title2->plaintext));
    echo $title2->plaintext.'<br>';
  }
}

【讨论】:

  • 好的,非常感谢@developerwjk ..你能告诉我如何从页码进入每个链接.. 例如:每个页面有 20 个帖子,每个帖子有 2 个 div,我想获取这2个div也
猜你喜欢
  • 2017-09-09
  • 2019-12-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-22
相关资源
最近更新 更多