共计 894 个字符,预计需要花费 3 分钟才能阅读完成。
一次爬虫 302 跳转问题
原始的代码是使用java原生的库java.net 来开发的,但是请求对应的URL 的时候总是返回不了数据,直接打开图片的URL是可以的,所以链接是正常的。应该是代码哪里写的有点问题。
这种爬虫的代码一般情况下比较类似,我是用 python 的 requests 库快速验证了下也没的问题。
import requests
data=requests.get('xxxx.jpg')
with open('test.jpg','wb') as fp:
fp.write(data.content)
写完上述代码之后快速验证下的确是可以正常下载下来的。
然后回过头去看下写的Java 代码,在重定向处理这块没有考虑的。
所以使用下面的代码
private String getRedirectUrl(String path) throws Exception {
HttpURLConnection conn = (HttpURLConnection) new URL(path)
.openConnection();
conn.setInstanceFollowRedirects(false);
conn.setConnectTimeout(5000);
return conn.getHeaderField("Location");
}
}
上述代码就是在构建的设置redirect为 False
看完这样的代码所以就回头去看requests库没有出现这个问题,那么出现这个原因就是requests库默认就是走的 redirect
顺便去看了下requests源码
def request(self, method, url,
params=None, data=None, headers=None, cookies=None, files=None,
auth=None, timeout=None, allow_redirects=True, proxies=None,
hooks=None, stream=None, verify=None, cert=None, json=None):
上述函数的定义中就会看到参数 allow_redirects 默认是 True ,好吧,此处完结。
正文完
请博主喝杯咖啡吧!