请让我知道在装载PHP的ajax之后可以废弃一些信息吗?我只使用SIMPLE_HTML_DOM作为静态页面。
感谢您的建议。
答案 0 :(得分:2)
抓取动态内容需要您实际呈现页面。 PHP服务器端的scraper只会执行一个简单的file_get_contents或类似的操作。大多数基于服务器的scrappers都不会呈现整个站点,因此不会加载Ajax调用生成的动态内容。
像Selenium这样的东西应该可以解决问题。快速谷歌搜索找到了许多关于如何设置它的例子。 Here is one
虽然我不会考虑这种刮擦,但您可以使用浏览器开发工具检查ajax调用。在Chrome中,在网站上点击F12
以打开开发工具控制台。
然后您应该看到如上所示的窗口。点击network
标签,然后点击Chrome的刷新按钮。这将显示您和网站之间的每个请求。然后,您可以过滤掉特定请求。
然后,您可以单击已提交部分中列出的任何项目以获取更多信息。
文件获取AJAX调用的内容 根据API在这些ajax调用方面的强大程度,您可以执行以下操作。
<?php
$url = "http://www.example.com/test.php?ajax=call";
$content = file_get_contents($url);
?>
如果返回的是JSON,则添加
$data = json_decode($content);
但是,您必须为站点上的每个AJAX请求执行此操作。除此之外,您将不得不使用类似于[here]提供的解决方案。
最后,您还可以实施PhantomJS来呈现整个网站。
如果你想要的只是特定ajax调用返回的数据,你可以使用file_get_contents来获取它们。但是,如果你试图刮掉整个网站,恰好也使用AJAX来操作文档,那么你将无法使用SIMPLE_HTML_DOM。
答案 1 :(得分:0)
最后我解决了我的问题。我只是获得了一个带有来自ajax调用的所有参数的POST url,并使用SIMPLE_HTML_DOM类发出相同的请求。