如何使用Ajax一次抓取一页,返回下一页链接并再次执行

正义_

问题:

我有一个php抓取功能和代码,都可以很好地工作,但是它超时,因为它试图加载60个不同的页面...

我当时正在考虑使用AJAX来一次循环加载一页。由于我是AJAX的新手,因此遇到了一些麻烦。

到目前为止,这就是我所能得到的,如果我提供链接,我可以让它遍历链接,但是我希望它刮取第1页,返回下一页链接,然后在连续循环中刮取下一页,直到没有为止更多页面。就目前而言,它进入了无限循环模式...

有想法吗?

这是我从使用数组的youtube视频中获取的代码(我仅通过字符串)

<?php
ini_set('display_errors',1);
//error_reporting(E_ALL);
set_time_limit(0);

require_once 'scrape_intrepid.php';

//posted to this page
if(isset($_POST['id'])) {

    //get the id
    $id = $_POST['id'];

    //this returns the next page link successfully, i just cant get it back into the function
    $ids = scrapeSite($id);
    echo $ids;
    echo "<br>";
    $data = $id . " - DONE";
    echo json_encode($data);

    exit();

} else {

    $ids = 'http://www.intrepidtravel.com/search/trip?page=1';
}
?>
<html>
    <head>
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
    <script>
        $(function() {

            function update() {
                ids = <?=json_encode($ids);?>;
                if(ids){
                    var id = ids;
                    $.post("index.php",{id:id}).done(function(msg){
                        console.log(ids,msg);
                        update();
                    });
                } else {
                    console.log("done");
                    $("#log").html("Completed!");
                }
            }

            $("#go").click(function() {
                $("#go").html("Loading...");
                update();
            });
        });

    </script>
</head>
<body>
    <button id="go">Go button</button>
    <div id="log">Results</div>
</body>

正义_

最终以另一种方式解决了这个问题:我正在调用function.php的函数运行脚本并返回要抓取的下一个URL。这是msg值,因此,一旦验证成功,就会再次调用刷新。刚处理了60页,每页耗时38秒:S

<script>
$(document).ready(function() {

    refresh('http://www.intrepidtravel.com/search/trip?');

    function refresh(url) {
        $.ajax({
            type: "GET",
            url: "function.php",
            data: 'url=' + url,
            success: function(msg){
                $('#result').append('--->Completed! <br>Next Page: is ' + msg);
                console.log(msg);
                if ($.trim(msg) == 'lastpage'){
                    $('#result').append('--->Last page - DONE!');
                }
                else {
                    refresh(msg);
                }
            }

        }); // Ajax Call
    } //refresh

}); //document.ready
</script>

和function.php文件:

require_once'scrape_intrepid.php';

if ($_GET['url']){
    $url = $_GET['url'];
    if ($url=="lastpage"){
        echo $url;
    } else {
    $nextlink = scrapeSite($url);
    echo($nextlink);
    }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

我们如何导航到网页,抓取数据,移至下一页并再次进行操作?

来自分类Dev

我们如何导航到网页,抓取数据,移至下一页并再次进行操作?

来自分类Dev

无法推动生成的下一页链接递归抓取

来自分类Dev

抓取下一页网址

来自分类Dev

Lua/Splash:未执行到下一页的链接

来自分类Dev

分页的下一页链接

来自分类Dev

Instagram 下一页 json 链接?

来自分类Dev

如何一次获取一页数据

来自分类Dev

如何在阿里巴巴抓取下一页链接

来自分类Dev

使用rvest或xml解析到下一页的链接?

来自分类Dev

抓取抓取下一页。正确的规则语法

来自分类Dev

下一页的抓取抓取不起作用

来自分类Dev

如何跳到PrintDocument的下一页?

来自分类Dev

如何使用硒抓取源自一页的多个网页?

来自分类Dev

上一页,下一页javascript

来自分类Dev

PHP MYSQL的上一页/下一页

来自分类Dev

上一页,下一页javascript

来自分类Dev

如何在Pentadactyl的新标签页中打开上一页/下一页?

来自分类Dev

如何使用jQuery DataTable设置下一页网址

来自分类Dev

如何使用Javascript或下一页提交表单

来自分类Dev

如何使用UIPageViewController加载下一页的数据

来自分类Dev

如何使用phpQuery获取下一页网址?

来自分类Dev

抓取的下一页重定向到主页

来自分类Dev

无法点击下一页进行网页抓取

来自分类Dev

Scrapy:登录后抓取下一页

来自分类Dev

Scrapy无法抓取下一页

来自分类Dev

Scrapy 不会抓取下一页

来自分类Dev

下一页/上一页链接样式wordpress

来自分类Dev

分页/上一页和下一页链接未显示