如何抓取带有分页的网页

how to scrape a webpage with pagination

我正在设置新服务器,想从网站上抓取一些信息

这是我的代码,我试图一页一页地抓取页面,但我只得到 2 页

$result = array();
function scrapingAnimelist($url, $page)
{

    $res = array();
    $urlParsed = $url . "&page=" . $page;
    $html = file_get_html($urlParsed);

    $pageData = array();
    foreach ($html->find('div[class=body]') as $item) {
        $metaData = array();
        $metaData['title'] = $item->find('h2[class=title]', 0)->innertext;
        $metaData['img'] = $item->find('img[class=img]', 0)->src;
        $metaData['url'] = $item->find('a', 0)->href;
        array_push($pageData, $metaData);
    }

    $res[$page] = $pageData;

    if (sizeof($pageData) == 20) {
        $page++;
        $res[$page] = scrapingAnimelist($url, $page);
    }
    global $result;
    $result = $res;


    return $pageData;

}

我希望只有 2 个数组(页面数据)的 json 对象的输出在 link 中为 3:https://anime-list2.cf/anime-search?s=mag

你的$result没有设置在第二个运行

你应该这样做

$result = array();
function scrapingAnimelist($url, $page) {
  global $result;

  $urlParsed = $url . "&page=" . $page;
  $html = file_get_html($urlParsed);

  $pageData = array();
  foreach ($html->find('div[class=body]') as $item) {
    $metaData = array();
    $metaData['title'] = $item->find('h2[class=title]', 0)->innertext;
    $metaData['img'] = $item->find('img[class=img]', 0)->src;
    $metaData['url'] = $item->find('a', 0)->href;
    array_push($pageData, $metaData);
  }

  $result[$page] = $pageData;

  if (sizeof($pageData) == 20) {
    return scrapingAnimelist($url, $page + 1);
  }
  return $result;
}