php - 如何在 php 中获取部分从 jquery 加载的页面的整个 html

标签 php jquery html web-scraping onload

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

所以我尝试:

$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在服务器上运行 Javascript(因此还有 jQuery)在客户端浏览器中运行。

没有简单的方法来使用 PHP 运行 javascript。据我所知,这是不可能的。其他语言(例如 Java)也许能够完成您想要做的事情。

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

这也是网络爬虫永远不会受到您使用 JavaScript 所做的事情影响的原因。在开发时记住这一点是一件好事。您的动态加载根本不会被这些爬虫索引。

关于php - 如何在 php 中获取部分从 jquery 加载的页面的整个 html,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10507523/

相关文章:

php - 偏移类型非法?

javascript - jQuery 或 javascript 阻止输入按键事件

html - CSS 不适用于带有 Gridview 的 div

HTML 电子邮件移动响应

php - 什么可以更好地节省服务器系统资源

php - 需要通过唯一用户标识、最大轮次从 mysql 中提取数据,然后按另一个值排序

php - 运行 PHP 时 Brew 库版本不匹配

javascript - 如何将变量从 jQuery 传递到 SqlDataSource 中的 SelectCommand?

jquery - 仅在提交后显示 jQuery.validationEngine 警报

html - Symfony 和 RequireJS - 如何提供静态 html 文件?