2017-05-05 83 views
-1

我通常阅读网站的源代码以获取我必须使用的信息。我这样做与使用PHP和/或Javascript从网站读取JSON文件。

$url="http://www.urlexample.com";  
file_get_contents($url); 

现在我发现一个更艰巨的任务:在一个网站(“fibalivestats.com”)还有我想读哪些内容一个div,但使用的file_get_contents当DIV内容空。在html源代码的div看起来像这样:

<div id ="aj_pbp"></div> 

是的,它是'空'。但外部html是不同的(不是空的)。他们如何填写这个div的内容?

他们用js函数是这样的:

function loadData() { 
var language = jQuery("html").attr("lang") || ''; 
var datapath = jQuery("#datapath").val() || ''; 
var jsonfile = datapath + 'data.json'; 
jQuery.getJSON(jsonfile,function(data) { 
jQuery.each(data, function(key,val) { 
    if(key == 'pbp') { 
    var pbp = ''; 
    var minipbp = ''; 
    var currentperiod = 0; 
    jQuery.each(val, function(index,p) { 
     var pernum = p['period']; 
     var ptype = 'reg'; 

... 

} 

我甚至无法达到的以.json文件的完整路径,因为有类似#datapath,我无法找到。

该功能要大得多。正如你所看到的,他们从一个名为'data.json'的json文件中获取信息。

现在的问题是:如何才能使用PHP和JS获取该json文件中包含的信息?我怎么能找到.json文件的完整路径?

+0

测试你的黑客技术? – Theofanis

+0

他们用JavaScript填充它。加载该HTML及其JavaScript的浏览器只是执行JS并用更多的HTML填充HTML。 – Mjh

+0

@Theofanis号我只想保存和处理公共信息。我想要存储访问网站时可用的内容,而不是其他任何隐藏的信息。 – Javi

回答

0

简短的回答是否定的。用php的file_get_contents你不能得到任何服务器提供html后加载的html。 Javascript在客户端浏览器中运行。 file_get_contents()不是浏览器,因此不会运行任何JS,它只会获取服务器提供的html。

在node.js中使用javascript webscrapping可能会有一些破解方法。但你已经要求一个php解决方案,这是超出了你的问题的范围。

进一步阅读有关JS的解决方案可以在这里找到:

https://scotch.io/tutorials/scraping-the-web-with-node-js