2015-10-20 62 views
0

我正在嘗試從此頁面獲取分數表http://www.skysports.com/football/competitions/bundesliga/table。我這樣做與無法從其他頁面獲取確切值

$bundes = file('http://www.skysports.com/football/competitions/bundesliga/table'); 

,當我嘗試顯示數組$ bundes我這個做:

echo '<pre>', print_r($bundes), '</pre>'; 

代碼巫婆我嘗試做顯示器顯示如下:

[1437] => 
[1022] => German Bundesliga 2015/16 
# Team Pl W D L F A GD Pts Last 6 
1 [1059] => [1060] => Bayern Munich [1061] => [1062] => 9 9 0 0 29 4 25 27 [1072] => 
[1073] => 
[1074] => 

這是表格的第一行。現在我可以顯示$ bundes [1060],並且我得到了拜耳慕尼黑的輸出,但是如何從$ bundes獲得值[1062],值是9,9,0,0,29,4,25和27?我需要在<td></td> 中顯示每個這個值當我嘗試echo $ bundes [1062]我什麼也沒有得到。

$doc = new \DOMDocument(); 
@$doc->loadHTMLFile('http://www.skysports.com/football/competitions/bundesliga/table'); 

$xpath = new \DOMXPath($doc); 
$rows = $xpath->query('//tbody/tr'); 

$data = []; 

foreach ($rows as $i => $row) { 
    $columns = $xpath->query('td', $row); 

    foreach ($columns as $column) { 
     $data[$i][] = trim($column->textContent); 
    } 
} 

print_r($data); 

它給你:

+1

'file()'將讀取輸入並將每個換行符分隔的字符串存儲到作爲結果返回的數組中。你不能指望skysports把新線路放在對你很重要的地方;如果要在不使用適當的數據格式(如JSON)的情況下進行挖掘,則必須對數據進行更智能的分析。 – klaar

+1

不要。它違反了條款 – 2015-10-20 09:21:15

回答

0

A萃取數據使用DOM manipulation classes做類似的更可靠的方式

Array 
(
    [0] => Array 
     (
      [0] => 1 
      [1] => Bayern Munich 
      [2] => 9 
      [3] => 9 
      [4] => 0 
      [5] => 0 
      [6] => 29 
      [7] => 4 
      [8] => 25 
      [9] => 27 
      [10] => 
     ) 
... 

關於袞的評論,沒有任何條款可以禁止抓取和提取數據(只要您以合理的速度這樣做,不會影響網站的性能)。 使用條款&版權法,但是,請確定您的可以使用哪些內容(例如重新發布)。

網頁抓取可能違背了某些網站的使用條款。這些條款的可執行性不明確(請參閱"FAQ about linking – Are website terms of use binding contracts?"

- 維基百科,Web scraping: Legal issues

BTW,頁面robots meta tag確實允許指數。

+0

是的,但索引是其他東西然後撕裂。我可以不在乎你是否會繼續下去,但是請記住,它實際上違反了他們的條款(甚至可能是法律),在未經同意和他們的知識的情況下刪除他們網站的內容。他們可能不會注意到它,如果你不經常刮內容,如果你的網站不會那麼大。但知道你在做什麼! – giorgio

+0

謝謝soooooo多! – fr33jumper

+0

2.7您不得以任何方式複製,下載,複製,重新發布,框架,播放和傳播天空網站上的任何資料,除非您個人非商業性家庭使用嚴格需要。 http://help.sky.com/articles/skycom-terms-and-conditions 2.8您不會以自動方式或以其他方式訪問天空網站,以便從天空中刮取,提取或以其他方式獲取任何材料網站(包括電視節目單)在第三方網站或應用程序中使用。 – 2015-10-20 18:58:04