2010-03-23 65 views
1

我recieving一个错误:IMDB抓取PHP

说明:未定义可变\瓦帕\ WWW \包括在第17行

\ imdbgrabber.php当使用这个代码:

<?php 
//url 
$url = 'http://www.imdb.com/title/tt0367882/'; 

//get the page content 
$imdb_content = get_data($url); 

//parse for product name 
$name = get_match('/<title>(.*)<\/title>/isU',$imdb_content); 
$director = strip_tags(get_match('/<h5[^>]*>Director:<\/h5>(.*)<\/div>/isU',$imdb_content)); 
$plot = get_match('/<h5[^>]*>Plot:<\/h5>(.*)<\/div>/isU',$imdb_content); 
$release_date = get_match('/<h5[^>]*>Release Date:<\/h5>(.*)<\/div>/isU',$imdb_content); 
$mpaa = get_match('/<a href="\/mpaa">MPAA<\/a>:<\/h5>(.*)<\/div>/isU',$imdb_content); 
$run_time = get_match('/Runtime:<\/h5>(.*)<\/div>/isU',$imdb_content); 

//build content 


line 17 --> $content.= '<h2>Film</h2><p>'.$name.'</p>'; 
    $content.= '<h2>Director</h2><p>'.$director.'</p>'; 
    $content.= '<h2>Plot</h2><p>'.substr($plot,0,strpos($plot,'<a')).'</p>'; 
    $content.= '<h2>Release Date</h2><p>'.substr($release_date,0,strpos($release_date,'<a')).'</p>'; 
    $content.= '<h2>MPAA</h2><p>'.$mpaa.'</p>'; 
    $content.= '<h2>Run Time</h2><p>'.$run_time.'</p>'; 
    $content.= '<h2>Full Details</h2><p><a href="'.$url.'" rel="nofollow">'.$url.'</a></p>'; 

    echo $content; 

//gets the match content 
function get_match($regex,$content) 
{ 
    preg_match($regex,$content,$matches); 
    return $matches[1]; 
} 

//gets the data from a URL 
function get_data($url) 
{ 
    $ch = curl_init(); 
    $timeout = 5; 
    curl_setopt($ch,CURLOPT_URL,$url); 
    curl_setopt($ch,CURLOPT_RETURNTRANSFER,1); 
    curl_setopt($ch,CURLOPT_CONNECTTIMEOUT,$timeout); 
    $data = curl_exec($ch); 
    curl_close($ch); 
    return $data; 
} 
?> 
+0

http://www.imdb.com/interfaces – 2010-03-23 17:15:58

+0

我最近为此做了一个类,可能会感兴趣:https:// github。 COM/aramkocharyan/IMDB式铲运机 – 2011-09-15 13:41:59

回答

6

要附加内容不存在的变量与$content=更换$content.=。更改行17的分配:

$content = '<h2>Film</h2><p>'.$name.'</p>'; 

你也可以改变的代码段为以下,这是稍微整洁:

$content = '<h2>Film</h2><p>'.$name.'</p>' 
     . '<h2>Director</h2><p>'.$director.'</p>' 
     . '<h2>Plot</h2><p>'.substr($plot,0,strpos($plot,'<a')).'</p>' 
     // etc 
3

您正尝试在变量$content中添加某些东西,但它不存在时,这自然会触发错误。

尝试在17行

1

除了别人怎么说,是另外一个问题你需要注意的代码。在返回函数get_match的值之前,您没有检查preg_match的返回值。你应该这样做:

if(preg_match($regex,$content,$matches)) 
    return $matches[1]; 
else 
    // return some default 
3

你没有收到一个错误,你收到一个通知,因为你试图将某些东西连接到一个不存在的变量。从第17行删除.=的点或在行17之前放$content = ''