【发布时间】: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。在每个周期。您如何期望它们不一次只显示一个结果? -
如何检测一个结果的解析何时完成并使其移至下一项?然后检测何时解析所有电影项并使其移动到下一页?