我试图从Metacritic获得一些视频游戏数据,并且我一直在这个网页上得到404错误:
http://www.metacritic.com/game/playstation-2/icoconnect命令非常基本:
Jsoup.connect(url).userAgent("Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.110 Safari/537.36").timeout(0).get();在我尝试连接到的数百个类似的视频游戏网页中,这是唯一每次返回404的网页。知道为什么吗?
发布于 2013-09-10 15:28:32
服务器正在返回404。
$ curl -I http://www.metacritic.com/game/playstation-2/ico
HTTP/1.1 404 Not Found
Content-Type: text/html; charset=UTF-8
Server: Apache
X-Varnish: 868026494
Date: Tue, 10 Sep 2013 15:26:21 GMT
Connection: keep-alive它还返回非404外观的内容这一事实并不影响Jsoup;它只是查看服务器在header中给出的代码。
欢迎来到“什么东西是如何工作的?”互联网的世界。)有趣的是,curl -I http://www.metacritic.com/game/playstation-2/SDKFJSDF返回200 OK的header代码,但显示内容为404的页面。我有没有说过互联网上到处都是垃圾?
您可以通过在ignoreHttpErrors(true)对象上调用Connection.Request来忽略这些错误。
发布于 2014-07-04 04:28:00
我意识到你的问题已经很晚了,但我今天遇到了这个问题,终于意识到Metacritic在哪里搞砸了。看起来,每当请求*ico文件(或大多数图像)时,它们都有一个apache配置来提供404错误。他们可能有这样的设置:
RewriteRule (js|ico|gif|jpg|png|css|xml)$ - [R=404,L,NC]]
在延期之前他们错过了一段时间。因此,任何以这些词结尾的内容,即使它们是游戏名称的一部分,都会返回带有内容的404。证明:
$ curl -I -H 'User-Agent: Mozilla...' 'http://www.metacritic.com/game/pc/foojpg'
HTTP/1.1 404 Not Found
$ curl -I -H 'User-Agent: Mozilla...' 'http://www.metacritic.com/game/pc/foojpgz'
HTTP/1.1 200 OK
$ curl -I -H 'User-Agent: Mozilla...' 'http://www.metacritic.com/game/pc/fooxml'
HTTP/1.1 404 Not Found
$ curl -I -H 'User-Agent: Mozilla...' 'http://www.metacritic.com/game/pc/foocss'
HTTP/1.1 404 Not Found
$ curl -I -H 'User-Agent: Mozilla...' 'http://www.metacritic.com/game/pc/foojs'
HTTP/1.1 404 Not Found
$ curl -I -H 'User-Agent: Mozilla...' 'http://www.metacritic.com/game/pc/fooico'
HTTP/1.1 404 Not Found
$ curl -I -H 'User-Agent: Mozilla...' 'http://www.metacritic.com/game/pc/fooicoo'
HTTP/1.1 200 OK我觉得挺有趣的:)不管怎样,谜团解决了。
https://stackoverflow.com/questions/18722674
复制相似问题