【问题标题】:Fetch html content from different domain which is injectedt by javascript从 javascript 注入的不同域中获取 html 内容
【发布时间】:2014-10-25 19:57:01
【问题描述】:

可以通过“file_get_contents”或 cURL 例如从 php 中的另一个域获取 html 内容。 http://davidwalsh.name/curl-download 。 但是当通过 JavaScript 注入 DOM 元素时,我如何获取它呢?

如果这在服务器级别上是不可能的,虽然我在 Selenium 方面没有经验,这是一个猜测:我可以在我的本地机器上以某种方式使用 Selenium (+RC?) 并从第三方域访问网页?

-我应该补充一点,这些元素似乎是在加载时添加的,并且不受任何触发器的限制。

【问题讨论】:

  • tampermonkey 或greasemonkey 将允许您在任何站点上运行自己的代码。
  • @dandavis,我没想到油猴。好吧,实际上我需要一些脚本来自动通过一系列页面并读取一些数据,存储并处理它们。所以使用greasemonkey脚本我仍然需要调用页面并手动进行存储,但它肯定会更快更容易。
  • 您也可以使用greasemonkey 脚本调用页面。我通常使用 URL 数组,localStorage 用于光标,iframe 用于获取 url/workdload 用户脚本,window.postMessage 用于触发“加载下一个 url”部分...

标签: javascript php html selenium curl


【解决方案1】:

如果你想在服务器端做,那么简单

$contents = file_get_contents('url to page');
echo $contents; 

如果您想在客户端执行此操作

 $.ajax({
    'url' : 'URL HERE',
    'type' : 'GET',
    'success' : function(data) {              
       $("#contents").html(data);
    }
});

注意:客户端只有在发送了适当的访问控制源头时才能工作(大多数网站不允许它们)

【讨论】:

  • 客户端代码只有在设置了适当的 CORS 标头时才能工作,因为根据 OP,它们来自 另一个域
  • @Ali,正如我试图说的,问题是我得到了静态 html,但是在 onload 期间插入的所有对浏览器可见的元素都不是由 php 获取的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-09-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多