IMDB 抓取问题

pra*_*231 5 php curl

可能的重复:
IMDB 是否提供 API?
如何通过 curl 调用使用 HTTP 请求发送标头?

我正在使用 PHPcurl从 IMDB 中抓取电影详细信息。它在获取数据方面效果很好,但我现在面临的问题是:

当我获取像这部电影这样的非英语电影时

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

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

hak*_*kre 3

当您使用浏览器请求页面时,浏览器会向服务器发送特定的请求标头。像 firebug这样的 Firefox 扩展可以显示这些(检查Net,这些是我刚刚使用 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
...
Run Code Online (Sandbox Code Playgroud)

可能产生影响的一个:

Accept-Language: en-us,en;q=0.8,de-de;q=0.5,de;q=0.3
Run Code Online (Sandbox Code Playgroud)

请参阅14.4 接受语言

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

您只需要让curl 使用您的浏览器使用的标头,您应该会得到相同的结果。请参阅如何通过curl 调用使用HTTP 请求发送标头?

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

curl -H "Accept-Language: de-de;q=0.8,de;q=0.5" http://www.imdb.com/title/tt0076306/
Run Code Online (Sandbox Code Playgroud)

对于英文版本:

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/
Run Code Online (Sandbox Code Playgroud)