可能重复:
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
数据。
答案 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
当您使用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/