【问题标题】:How to get, in php, the entire html of a page loaded in part from jquery如何在php中获取部分从jquery加载的页面的整个html
【发布时间】:2012-05-08 22:33:57
【问题描述】:

我有这个问题好几天了... 我必须从 php 加载页面的整个 html。 在此页面上,有一个 jquery 函数,当所有页面加载完毕时会调用该函数。此函数将其他 html 加载到页面中,因此我必须加载所有 html(也加载了 jquery 的部分)。我可以知道我让所有页面都试图找到一些仅从 jquery 加载的标签。 (例如:名称为XXX的标签输入、属性多的标签输入等)

所以我试试:

$html = file_get_contents("http://wwww.siteToScrape.com");
if (strpos($html, 'multiple') !== false) {
    echo 'found';
} else {
    echo 'not found';
}

但结果是“未找到”。

然后我下载了simple html dom 并尝试:

include 'simple_html_dom.php';
$html = file_get_html("http://wwww.siteToScrape.com");
if (strpos($html, 'multiple') !== false) {
    echo 'found';
} else {
    echo 'not found';
}

但结果仍然是“未找到”。

所以我想得到一些 php 脚本来模拟浏览器(所以也可以加载 jquery),我下载了 PHP Scriptable Web Browser 并尝试:

require_once('browser.php');
$browser = new SimpleBrowser();
$p = $browser->get('http://wwww.siteToScrape.com');
if (strpos($p, 'multiple') !== false) {
    echo 'found';
} else {
    echo 'not found';
}

但结果仍然是“未找到”。 我不知道该怎么做..有人可以帮助我吗?谢谢!!!!

【问题讨论】:

  • 请检查示例中使用的变量是否正确。
  • 已更正!这只是这篇文章的复制和粘贴错误:)

标签: php jquery html web-scraping onload


【解决方案1】:

问题是你试图混合服务器和客户端。

PHP 在服务器上运行 Javascript(因此也包括 jQuery)在客户端浏览器中运行。

使用 PHP 运行 javascript 并不容易。据我所知,这甚至是不可能的。其他语言(例如 Java)可能能够完成您想做的事情。

您应该考虑另一种方法来做到这一点。

这也是为什么网络爬虫永远不会受到您使用 javascript 所做的事情的影响的原因。这是开发时要牢记的一件好事。这些爬虫根本不会为您的动态加载编制索引。

【讨论】:

  • 你知道java解决方案吗?
  • 我只记得几个月前在这个网站上读到过它。我建议您关闭此问题并创建一个带有正确标签的新问题。你也可以看看这个简单的搜索:google.no/…
【解决方案2】:

据我所知,这是不可能的“只有 PHP”。 Javascript 在客户端而不是服务器上运行,因此如果没有某种浏览器仿真器环境是不可能的。

编辑:您可以将 javascript 放在网页本身中,这将在整个网页完全生成后获取整个网页的 innerHTML,然后使用 ajax 调用将其发送到您的服务器。您必须遵守同源策略的限制(不允许您对主机网页所在的域以外的域进行 ajax 调用)。

【讨论】:

    【解决方案3】:

    正如其他人所说,jquery 是 javascript,通常由客户端(网络浏览器)而不是服务器执行。

    PHP 作为一种服务器端语言,没有 javascript 解释器。

    据我所知,使用 PHP 运行 javascript 的最简单方法是通过 Web 测试工具,该工具通常集成无头浏览器。您可以查看mink,它有一个用于zombie node.js 无头浏览器的后端。

    还有带有各种 PHP 接口的 phantomjs 无头浏览器 like this one,我通过快速的 google 搜索找到了它。

    在资源更密集的领域,还有selenium,它也有PHP接口。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-11-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-17
      • 1970-01-01
      • 2020-01-08
      • 2013-08-22
      相关资源
      最近更新 更多