IMDB刮痧问题

时间:2011-08-10 10:09:44

标签: php curl

  

可能重复:
  Does IMDB provide an API?
  How to send a header using a HTTP request through a curl call?

我正在使用PHP curl从IMDB中删除电影详细信息。它在获取数据方面非常有效,但我现在面临的问题是:

当我获取非英语电影时,如this movie

当我在浏览器中打开这部电影时,它会显示这部电影的“IMDB英语” - 版本页面,显示电影名称“寄宿学校”。但是当我通过curl获取数据时,它会获取该电影的原始页面,其中电影名称为“LeidenschaftlicheBlümchen”。

因此,请建议我如何在英文版IMDB页面中获取curl数据。

1 个答案:

答案 0 :(得分:3)

当您使用浏览器请求页面时,浏览器会向服务器发送特定的请求标头。像firebug can show these (check Net)这样的firefox扩展,这些是我刚刚使用firefox发送到服务器的标头的示例:

GET /title/tt0076306/ HTTP/1.1
Host: www.imdb.com
User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:5.0) Gecko/20100101 Firefox/5.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.8,de-de;q=0.5,de;q=0.3
Accept-Encoding: gzip, deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Connection: keep-alive
...

可能产生影响的那个:

Accept-Language: en-us,en;q=0.8,de-de;q=0.5,de;q=0.3

请参阅14.4 Accept-Language

当您使用curl时,它也会发送特定的请求标头,但它们可能会有所不同。但是,您也可以命令curl使用您指定的标题。

您只需要使用浏览器使用的标题使用curl,您应该得到相同的结果。请参阅How to send a header using a HTTP request through a curl call?

例如,获取页面的德语版本:

curl -H "Accept-Language: de-de;q=0.8,de;q=0.5" http://www.imdb.com/title/tt0076306/

英文版:

curl -H "Accept-Language: en-us,en;q=0.8,de-de;q=0.5,de;q=0.3" http://www.imdb.com/title/tt0076306/