【问题标题】:HTML Pagination Parsing with PHP Simple HTML DOM Parser使用 PHP Simple HTML DOM Parser 进行 HTML 分页解析
【发布时间】:2018-02-19 08:24:03
【问题描述】:

我正在尝试使用分页解析电影网站。我想解析第 1 页上的所有电影项目,当它完成时,我希望解析器在下一页继续。我写了一个可以工作的解析器,但它不会解析页面上的所有电影项目,也不会在另一个页面上继续。我想检测一个结果的解析何时完成并使其移至下一项。然后检测何时解析所有电影项目并使其移动到下一页。我希望当我运行解析器时,它应该一个一个地显示电影标题、年份等,然后在下一页继续。目前它只在第 1 页显示/解析一个电影项目并且不继续工作。这是我的代码和示例:

解析示例:http://minerbitco.in/parse/parse.php

    <?php

    include_once 'simple_html_dom.php';



    $page = (!isset($_GET['page'])) ? 1 : $_GET['page'];
        echo '<br> Parsing Page #'.$page.'<br><br>';
        $html = file_get_html('https://srulad.com/movies/type/movie#page-'.$page);
        $obj = $html->find('div.movie_item');
        $datas = [];
        if($obj){
            foreach ($obj as $key => $data) {


                $movie_url = 'https://srulad.com/'.$data->find('div.poster a', 0)->href;

                $html2 = file_get_html($movie_url);

                $item['url'] = $movie_url;

                $item['year'] = $html2->find('#movie_content > div', 0)->children(2)->find('div', 0)->children(0)->children(1)->plaintext;

                $item['genre'] =  $html2->find('#movie_content > div', 0)->children(1)->find('span', 0)->plaintext;

                $item['description'] = $html2->find('#movie_content > div', 0)->children(1)->find('div.plot', 0)->plaintext;

                $item['imdb_rating'] = $html2->find('#movie_content > div', 0)->children(2)->find('div', 0)->children(1)->children(1)->find('span', 0)->plaintext;

                $item['englishtitle'] = $html2->find('#movie_content > div', 0)->children(1)->find('h2.newmt', 0)->plaintext;

                $item['geotitle'] = $html2->find('#movie_content > div', 0)->children(1)->find('h3.newmt', 0)->plaintext;

                $item['poster'] = $html2->find('#movie_content > div', 0)->children(0)->find('img', 0)->src;



                $url = $item['url'];
                $year = $item['year'];
                $desc = $item['description'];
                $rating = $item['imdb_rating'];
                $poster = $item['poster'];
                $engtitle = $item['englishtitle'];
                $geotitle = $item['geotitle'];
                $genre = $item['genre'];
    }}

if ($data === end($obj)) {
    echo '<META http-equiv="refresh" content="10;URL=#page-'.($page+1).'">';
}

else {
    echo "dasrulebulia.";
}

    echo 'URL: '.$url.'<br>';
    echo 'პოსტერის URL: '.$poster.'<br>';
    echo 'სათაური ინგლისურად: '.$engtitle.'<br>';
    echo 'სათაური ქართულად: '.$geotitle.'<br>';
    echo 'წელი:'.$year.'<br>';
    echo 'ჟანრი:'.$genre.'<br>';
    echo 'აღწერა:'.$desc.'<br>';
    echo 'რეიტინგი:'.$rating.'<br>';
?>

【问题讨论】:

  • 你的问题是?
  • 我想知道我的代码有什么问题。我希望当我运行解析器时,它应该一个一个地显示电影标题、年份等,然后在下一页继续。目前它只在第 1 页显示/解析一个电影项目,并且不会继续工作。
  • 你一直在覆盖 $url 和 co。在每个周期。您如何期望它们一次只显示一个结果?
  • 如何检测一个结果的解析何时完成并使其移至下一项?然后检测何时解析所有电影项并使其移动到下一页?

标签: php html parsing dom


【解决方案1】:

【讨论】:

  • 我将如何检测一个结果的解析何时完成并使其移至下一个项目。然后检测所有电影项目何时被解析并使用您的解析器将其移至下一页?
猜你喜欢
  • 1970-01-01
  • 2017-06-08
  • 1970-01-01
  • 2023-03-15
  • 2011-06-17
  • 1970-01-01
  • 2021-01-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多