7

我正在研究网页抓取并实现了 AJAX 分页,由于网站是在扩展名为 .aspx 的 asp ie 页面中开发的,因此我尝试提交分页表单以从第一页以外的其他页面获取数据,但没有成功,请看这里代码我已经使用了从所有实现了 AJAX 分页的 asp.net 页面中抓取数据,所以我的问题是如何从 php 中单击分页链接,即是否可以在服务器端运行 jQuery 或 javascript?

我知道 Node.js 可用于在服务器端运行 javascript,但不知道如何将它与 Apache 和 PHP 一起使用

4

7 回答 7

5

使用PhantomJS与其他服务上的 HTML 页面进行交互。有这样的 PHP

CasperJS是一个建立在 PhantomJS 之上的库,它允许自动化一些常见的测试/脚本任务。

如果您不需要与远程页面交互,但想使用 jQuery 选择器从 HTML 中提取数据,请使用Cheerio

于 2015-11-28T09:41:54.960 回答
3

事实上,JavaScript 可以在服务器端运行。

节点.js

但是,您在这里的解决方案是使用 AJAX 调用 PHP 脚本进行分页,因为服务器端 javascript 对这个问题没有多大意义。

于 2013-02-27T10:20:35.253 回答
1

不,不可能在服务器端运行 jQuery,因为 jQuery 在用户的 Web 浏览器中运行(在 javascript 解释器内)。您可以通过 jQuery 对可以在服务器上运行代码的 PHP 脚本进行 Ajax 调用。

于 2013-02-27T10:18:22.537 回答
1

你能做的是

<script type="text/javascript" src="js/jquery.js"></script>
<script type="text/javascript">

    $(function()
    {
        $('ul li a').on('click',function()
        {
            var href = $(this).attr('href');

            $.ajax(
            {
                url         : href,
                data        : passData,
                dataType    : 'html'
                beforeSend  : function()
                {

                },
                success     : function(response)
                {
                    //display it as needed...
                }
            });
        });
    });

</script>

<ul>
    <li><a href="paging.aspx?page=1">1</a></li>
    <li><a href="paging.aspx?page=2">2</a></li>
    <li><a href="paging.aspx?page=3">3</a></li>
    <li><a href="paging.aspx?page=4">4</a></li>
</ul>

在上面的示例中,我有四个分页链接,在该链接上单击事件我进行 AJAX 调用,然后在 AJAX 成功回调中根据您的意愿显示结果。

但请记住,jQuery 不能在使用 Node.js 的服务器上运行。

于 2013-02-27T10:23:17.737 回答
0

JQuery 和 Javascript 是一种客户端语言,对于分页来说,这可以很容易地使用 jQuery 来实现。

Ajax 可用于与服务器进行通信而无需页面渲染,并且可以为用户提供更好的“客户端”体验。您可以使用 Ajax 连接到服务器并使用 jQuery 执行从服务器返回的操作。

于 2013-02-27T10:18:52.117 回答
0

我认为使用 ajax 可以轻松完成分页操作。否则,如果您真的想使用服务器端 js 。然后尝试Node.js

于 2013-02-27T10:20:15.267 回答
0

我试图这样做,这很痛苦。

我的建议(在 2020 年),特别是如果你使用 React,是使用这个:https ://cheerio.js.org/ 。

于 2020-04-26T08:10:13.477 回答