【问题标题】:Is it possible to run jQuery on server side?是否可以在服务器端运行 jQuery?
【发布时间】:2013-02-27 10:16:25
【问题描述】:

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

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

【问题讨论】:

  • 不,但 Node.js 可以(快速回答!!)
  • jQuery 代码可以上传到服务器但它的效果显示在客户端..因为它的客户端编程语言...你可以使用 node.js 因为它的服务器端 javascript
  • 在 .aspx 页面上,当我单击分页链接时,它会通过 AJAX 提交表单,请检查 stackoverflow.com/questions/14768302/… 中 curl 请求中的 CURLOPT_POSTFIELDS
  • 即使您可以在服务器端使用 javascript。使用javascript修改后,您将无法抓取页面,导致动态内容不可用。我以前用 curl 自己刮网页

标签: php javascript jquery web-scraping screen-scraping


【解决方案1】:

使用PhantomJS 与其他服务上的 HTML 页面进行交互。有一些 PHP 库,例如 this

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

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

【讨论】:

    【解决方案2】:

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

    node.js

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

    【讨论】:

    • 不是我建议的简单分页请求的方向?
    • 如何在 PHP 中使用 node.js 的任何示例?
    【解决方案3】:

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

    【讨论】:

      【解决方案4】:

      你能做的是

      <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 如何管理分页。
      • @SubodhGhulaxe 没关系,我清楚地说明了例子......所以我只是为你提供了关于你可以做什么的帮助......
      【解决方案5】:

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

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

      【讨论】:

        【解决方案6】:

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

        【讨论】:

          【解决方案7】:

          我试过这样做,但很痛苦。

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

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2012-03-30
            • 1970-01-01
            • 2022-11-04
            • 1970-01-01
            • 2015-10-14
            • 1970-01-01
            • 2017-04-05
            • 1970-01-01
            相关资源
            最近更新 更多