2017-05-05 81 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