【问题标题】:how to click using simple html dom parse in php如何在 php 中使用简单的 html dom 解析点击
【发布时间】:2013-11-24 15:44:47
【问题描述】:

我正在尝试单击 href 属性 这是我的示例 html

<ul>
  <li>
     <a href='http://www.google.com'>Google</a>
  </li>
</ul>

这是我的 php 代码

<?php 
  require_once('classes/simple_html_dom.php');
  $html = file_get_html("/var/www/html/dk/PHP_SCRAPPING/google.html");
  echo $html->find("ul li a",0)->href;
?>

输出是

http://www.google.com

我只想点击这个网址。怎么做? 请不要告诉我这样做

file_get_html($html->find("ul li a",0)->href);

我正在寻找可以通过使用简单的 html dom 点击任何 href 的方法。

【问题讨论】:

  • PHP 无法“点击”,也许您想header("Location:$url"); 将用户重定向到该网址。
  • 您不能在服务器端点击带有 PHP 的 URL。您可以请求包含链接。这是你已经做过的。此外,file_get* 函数对许多服务器都有限制,您可能应该改用cURL
  • 不能这样。顺便问一下,这个脚本的目的是什么?自动点击广告?我确实没有看到任何好的目的
  • 我也在 Ruby 上工作过。他们使用机械化课程。并且有点击方法。所以我也期待在简单的 html dom 解析器中使用这种方法。
  • 好的,例如search.yahoo.com 只需查询任何内容并单击搜索按钮。获取 DOM 后点击下一步按钮,直到所有页面都被抓取。

标签: php web-scraping web-crawler simple-html-dom


【解决方案1】:

您不能在 PHP 中这样做,因为所有 PHP 代码都是在服务器端而不是客户端执行的。 PHP代码根本不在浏览器中运行,所以本质上没有链接可以点击。

如果您想在客户端编写脚本,则需要使用 javascript。 尽管出于安全原因,任何理智的浏览器都不会让您在 Javascript 中模拟点击。

我认为你需要了解你到底在做什么。

【讨论】:

    【解决方案2】:

    使用 Python 和 Chrome/Firefox/PhantomJS Webdriver 查看 Selenium,它可以让您完全控制单击任何网页中的任何按钮或链接。使用 BeautifulSoup 解析它,并可以从 Python 创建您的 json

    【讨论】:

      【解决方案3】:

      如果我没有误会你,你可以用 2 个选项来做

      1. PHP -- header("Location:http://www.google.com");

      2. Javascript-- window.location("http://www.google.com");

      【讨论】:

      • Ruby Mechanize 类具有点击方法。我想使用简单的 html dom 解析器或任何其他解析器在 php 中做同样的事情?
      【解决方案4】:

      试试

      echo $html->find("ul li a",0);
      

      如果这不起作用,您可以这样做:

      echo "<a href='".$html->find("ul li a",0)->href."'>";
      echo $html->find("ul li a",0)->plaintext."</a>";
      

      【讨论】:

        【解决方案5】:

        在这个API他们有一个点击方法

        【讨论】:

          【解决方案6】:

          我会使用 jQuery,我很确定你可以做这样的事情。

          <head>
          <script>      $("#clickable").click();         </script> 
          </head>
          
          <body> <?php  echo "<span id='clickable'>" . $html->find("ul li a",0)->href ."</span>";  ?>   </body>
          

          显然,您需要在 jquery 库链接中添加并(文档)准备好...我还没有测试它,但我看不出 jQuery 不会点击服务器端生成的链接的任何原因

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2012-01-17
            • 1970-01-01
            • 1970-01-01
            • 2012-11-14
            • 2015-02-14
            • 2016-07-30
            相关资源
            最近更新 更多