我正在使用 PHPcurl
从 IMDB 中抓取电影详细信息。它在获取数据方面效果很好,但我现在面临的问题是:
当我在浏览器中打开这部电影时,它会向我显示这部电影的“IMDB 英语”版本页面,其中显示了电影名称“寄宿学校”。但是当我通过curl
它获取数据时,它会获取这部电影的原始页面,其中电影名称是“Leidenschaftliche Blümchen”。
所以请建议我如何curl
在英文版 IMDB 页面中获取数据。
当您使用浏览器请求页面时,浏览器会向服务器发送特定的请求标头。像 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)
归档时间: |
|
查看次数: |
2988 次 |
最近记录: |