2015-10-20 60 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