Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/237.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
前250名imdb详细信息php抓取器_Php_Mysql_Imdb - Fatal编程技术网

前250名imdb详细信息php抓取器

前250名imdb详细信息php抓取器,php,mysql,imdb,Php,Mysql,Imdb,我正在尝试建立一个个人电影数据库,我想从imdb获取数据。。。 是的,我知道有很多api和抓取器,但没有一个在做需要做的事情 到目前为止,我还不能想出一个解析列表并从中获取数据的解决方案 我试着用卷曲脚本来做,但没有成功 例如: 我想知道《教父:第二部分》是否进入前250名?如果是,排名是多少…API 我会调查IMDB是否有可用的API。。。如果他们这样做的话,这可能会像查询URL和解析使用json\u decode返回的数据一样简单 没有可用的API? 获取网页 不需要使用CURL一个简单的文

我正在尝试建立一个个人电影数据库,我想从imdb获取数据。。。 是的,我知道有很多api和抓取器,但没有一个在做需要做的事情

到目前为止,我还不能想出一个解析列表并从中获取数据的解决方案

我试着用卷曲脚本来做,但没有成功

例如:

我想知道《教父:第二部分》是否进入前250名?如果是,排名是多少…

API 我会调查IMDB是否有可用的API。。。如果他们这样做的话,这可能会像查询URL和解析使用
json\u decode
返回的数据一样简单

没有可用的API? 获取网页 不需要使用CURL一个简单的
文件\u get\u contents
就可以了

提取列表 现在您有了web页面,然后有两个选项:

  • 使用DOM解析器解析网页(冗长,不必要)
  • 正则表达式来提取你想要的信息(简单,简短)
  • 正则表达式 快速查看列表的源代码可显示列表的格式:

    <td class="titleColumn">RANK. <a href="/link/to/film" title="Director/Leads" >FILM TITLE</a>
    
    然后,您可以使用标准的
    PHP
    数组函数来执行搜索电影之类的操作





    旁注 特别是如果您使用上面的无API方法,您可能希望考虑将结果存储在本地,并且仅每X小时/天/周更新一次以节省加载时间等。我假设您已经计划这样做(正如你所说,你想要一个个人电影数据库……但我还是想提一下!

    这里有几点建议:
    <td class="titleColumn">RANK. <a.*?>FILM TITLE</a>
    
    <td class="titleColumn">(RANK). <a.*?>(FILM TITLE)</a>
    
    #<td class="titleColumn">(\d+)\. <a.*?>(.*?)</a>#
    
    $page = file_get_contents("http://www.imdb.com/chart/top"); //Download the page
    
    preg_match_all('#<td class="titleColumn">(\d+)\. <a.*?>(.*?)</a>#', $page, $matches); //Match ranks and titles
    
    $top250 = array_combine($matches[1], $matches[2]);          //Final array in format RANK=>TITLE
    
    echo $top250[1];
    
    /**
    Output:
    
    The Shawshank Redemption
    
    */
    
    echo array_search("The Godfather", $top250);
    
    /**
    Output:
    
    2
    
    */