Php IMDB刮削问题

Php IMDB刮削问题,php,curl,Php,Curl,可能的重复项: 我正在使用PHPcurl从IMDB中获取电影细节。它在获取数据方面非常有效,但我现在面临的问题是: 当我拍非英语电影时,比如 当我在浏览器中打开这部电影时,它会显示“IMDB英语”——这部电影的版本页面,其中显示了电影名称“寄宿学校”。但是当我通过curl获取数据时,它会获取这部电影的原始页面,其中电影名为“Leidenschaftliche Blümchen” 因此,请建议我如何获取英文版IMDB页面中的curl数据。当您使用浏览器请求页面时,浏览器会向服务器发送特定的请求

可能的重复项:

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

当我拍非英语电影时,比如

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


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

当您使用浏览器请求页面时,浏览器会向服务器发送特定的请求标题。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使用浏览器使用的标题,就可以得到相同的结果。看

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

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/

您是否尝试传递具有区域信息的有效用户代理?选项为:机器人和屏幕抓取中的
-A
:您不得在本网站上使用数据挖掘、机器人、屏幕抓取或类似的数据收集和提取工具,除非我们明确书面同意,如下所述。或,实际上,您可以跳过解析他们的非结构化数据并下载他们的结构化数据。bcoz我已经看到了一些地方,他们像往常一样得到了我想要的结果。你能告诉我什么是合适的标题吗。因为我已经尝试了这个,但没有得到。@pravat231:我扩展了答案,提出了一个建议,并链接了标题的规格。是的,我也在尝试同样的事情。另一个嫌疑犯是Javascript。您是否“实际上”尝试发送相同的标题并检查响应是什么?是的,我已经尝试过了,但我在另一个网站上看到他们得到了正确的结果。@Gaurav Gupta:添加了一个curl调用示例,可以为我实现这一点,包括德语和英语。