能否在服务器端运行jQuery?

8
我正在处理一个带有AJAX分页的网页抓取任务。由于该网站是用asp开发的,即扩展名为.aspx的页面,我尝试提交分页表单以获取其他页面的数据,但没有成功。你可以在这里查看我使用的代码Scraping data from all asp.net pages with AJAX pagination implemented。所以我的问题是如何在php中点击分页链接?也就是说,是否可能在服务器端运行jQuery或javascript?
我知道Node.js可以用来在服务器端运行javascript,但不知道如何将它与Apache和PHP一起使用。

1
没有,但是 Node.js 可以。(快速回答!!) - diyoda_
jQuery代码可以上传到服务器,但其效果在客户端显示,因为它是客户端编程语言...你可以使用Node.js,因为它是服务器端JavaScript。 - Dipesh Parmar
在 .aspx 页面上,当我点击分页链接时,它通过 AJAX 提交表单,请检查 https://dev59.com/YGUq5IYBdhLWcg3wHs6Y 中的 curl 请求中的 CURLOPT_POSTFIELDS。 - Subodh Ghulaxe
即使您可以在服务器端使用JavaScript,由于动态内容在被JavaScript修改后不可用,因此您将无法对页面进行抓取。我曾经使用过curl来抓取页面。 - BlackFire27
7个回答

5
使用PhantomJS与其他服务上的HTML页面进行交互。像this这样的PHP库也有类似功能。 CasperJS是在PhantomJS基础上构建的库,允许自动化一些常见的测试/脚本任务。
如果您不需要与远程页面交互,但想使用jQuery选择器从HTML中提取数据,请使用Cheerio

3

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

Node.js

然而,在此情况下,您的解决方案是使用AJAX调用PHP脚本进行分页,因为服务器端JavaScript对于这个问题并没有太多意义。


这不是我会建议用于简单分页请求的方向。 - CR41G14
我该如何将Node.js与PHP结合使用?有什么示例吗? - Subodh Ghulaxe

1
不,无法在服务器端运行jQuery,因为jQuery在用户的Web浏览器中运行(在JavaScript解释器内部)。您可以通过jQuery发出Ajax调用到PHP脚本,该脚本可以在服务器上运行代码。

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。

该页面的分页不像page=1、page=2那样简单。相反,每次点击分页链接时,它会提交一个带有__EVENTTARGET、__EVENTARGUMENT、__VIEWSTATE、__EVENTVALIDATION等字段的隐藏表单。我不知道ASP是如何管理分页的。 - Subodh Ghulaxe
@SubodhGhulaxe 这并不重要,我明确地说了例子...所以我只是给你提供了关于你可能做的事情的帮助... - Dipesh Parmar

0

我曾尝试过这个,但是很痛苦。

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


0

JQuery和Javascript是客户端语言,对于分页,可以轻松使用jQuery实现。

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


0

我认为使用Ajax可以轻松实现分页。否则,如果你真的想采用服务器端JS,那么尝试Node.js


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接