一次爬虫 302 跳转问题

103次阅读
没有评论

一次爬虫 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 ,好吧,此处完结。

admin
版权声明:本站原创文章,由admin2021-05-21发表,共计894字。
转载提示:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
评论(没有评论)