php js获取元素id,获取JavaScript派生的dom-tree元素

我的目标是获取元素< div id =“ calender”>以及浏览器中显示的元素中的所有内容.关键是普通的get-html-source不会做这件事.我要查找的元素在php函数file_get_contents的html输出中不存在.

我试图通过xpath byt在http://us3.php.net/manual/en/class.domxpath.php的帮助下通过php获取源代码,其中包括一个很好的工具来获取html页面中任何标记中的内容.但是这里的问题可能是元素(日历)是由javascript形成到加载页面的,而服务器端php无法捕获.因此,有没有一种方法可以代替我通过javascript捕获此类元素(div).

有针对此类问题的javascript脚本示例(如果我已正确理解它们的话),但目前无法获得简单的javascript来工作.以下示例显示了我如何尝试构建代码. $ajax的东西只是我尝试解决问题但不知道如何使用的一种方法.在这里,我无法弄清为什么简单的javascript函数不起作用(仅出于测试目的).

load demo

body {

font-size: 12px;

font-family: Arial;

}

function ok {

alert "OK";

}

function get_html (my_html){

alert "OK";

var l = document.getElementById('my_link').value;

alert l;

alert my_html;

var url = my_html;

$.ajax({

url: url,

dataType: 'html'

success: function(data){

//do something with data, which is the page 1.html

var f = fs.open("testi_kalenteri.html", "w");

f.write(data);

f.close();

alert "data saved";

}

});

}

show ok

简而言之,我有一个网页链接,其中显示了一个(预订)日历,但是在“正常”源代码中,file_get_contents(php)缺少该日历.如果我使用Chromes工具(F12)浏览html源,则可以在其中找到日历.希望该信息通过javascript或php等获得.

解决方法:

该iframe指向该位置:

实际上,这是日历的真正来源…

在您对此答案发表评论后进行编辑

如果日历不是生成的html的一部分,则肯定是异步生成的(在javascript中,客户端).

从这个假设出发,我再次检查了源代码.

在浏览器的开发人员工具的“网络”部分中,您可以监视要加载的文件,我在其中寻找

调用服务器(所有但调用资源:图像,样式表…).

我觉得自己处在正确的轨道上(异步javscript调用以生成带有json数据的html),我寻找的javascript代码或文件不是通常的库文件(jquery,bootstrap等).

tl; dr

日历确实是异步生成的.

您无法在PHP中获得带有curl或file_get_content的完整html,并且

您无法使用Ajax代码访问它(由于Same-origin policy).

顺便说一句,您应该与该站点联系,以查看是否可以在他们的同意下通过PHP访问他们的api.

希望它能帮助您了解整个过程…

标签:html,javascript,php

来源: https://codeday.me/bug/20191119/2032720.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值