我的目标是获取元素< 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 demobody {
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";
}
});
}
html-link
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