使用java做爬虫获取网络资源下载403错误解决办法
前言:
在做爬虫的时候,有时候需要下载爬到连接的URL。
比如:String url = “http://www.kaigejava.com/uplode/pdf/xxxxx.pdf\”;
如果使用File file = new File(url );
发现file处理后成了:http:\\www.kaigejava.com\\uplode\\pdf\\xxxxx.pdf
然后使用file的判断方法。提示获取不到。
那么使用java的file对象怎么获取网络资源?
code:
代码如下:
publicclass FileTests {
publicstaticvoid main(String[] args) throws Exception {
String fileName = \”d96c6dcfda2559c5865db89388d28cbf.pdf\”;
String fileUrl = \”http://10.10.10.242:82/xxx/files/d96c6dcfda2559c5865db89388d28cbf.pdf\”;
String downPath = \”C:\\\\Users\\\\kaigejava\\\\Desktop\\\\xss\”;
downUrlTxt(fileName,fileUrl,downPath);
}
publicstaticvoid downUrlTxt(String fileName,String fileUrl,String downPath){
File savePath = new File(downPath);
if (!savePath.exists()) {
savePath.mkdir();
}
String[] urlname = fileUrl.split(\”/\”);
intlen = urlname.length-1;
String uname = urlname[len];//获取文件名
try {
File file = new File(savePath+\”/\”+uname);//创建新文件
if(file!=null && !file.exists()){
file.createNewFile();
}
OutputStream oputstream = new FileOutputStream(file);
URL url = new URL(fileUrl);
URLConnection uc ;
uc = url.openConnection();
uc.addRequestProperty(\”User-Agent\”,
\”Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)\”);
uc.setDoInput(true);//设置是否要从 URL 连接读取数据,默认为true
uc.connect();
InputStream iputstream = uc.getInputStream();
System.out.println(\”file size is:\”+uc.getContentLength());//打印文件长度
byte[] buffer = newbyte[4*1024];
intbyteRead = -1;
while((byteRead=(iputstream.read(buffer)))!= -1){
oputstream.write(buffer, 0, byteRead);
}
oputstream.flush();
iputstream.close();
oputstream.close();
} catch (Exception e) {
System.out.println(\”读取失败!\”);
e.printStackTrace();
}
System.out.println(\”生成文件路径:\”+downPath+fileName);
}
}
下载提示:
需要注意的:
如果提示:Server returned HTTP response code: 403 for URL
这个错误。
有可能是服务器拒绝了java直接访问。
所以需要使用下面选中的部分。伪装成浏览器请求。
如下:
百科:
User-Agent:
如果您觉得有用请分享给您的朋友。
【欢迎关注微信公众号:凯哥java】
开心一刻:
1、老师:“生铁是铁,熟铁是铁,铁锤一敲铁打铁。谁能对下联?”
小明:“男人是人,女人是人,床板一响人造人。”
老师:“滚出去!”
2、老师:“都是一个老师教的,为什么人家就学得好呢?”
小明:“因为不是一个父母生的。”
老师:“滚出去!”
3、初中开学典礼校长谈早恋。
校长:早恋犹如青色的苹果,过早的品尝只会让你感到苦涩。
小明:苹果熟透了还能轮到我么。
校园:快滚,不然我开除你!
4、老师:为什么鸡蛋是圆形的,不是方形的呢?
小明:老师,你有考虑过母鸡的感受吗?
老师!@#!@#
Java避坑指南!IDEA查看.class文件源码下载失败问题汇总
上一篇分享的是《详解NIO Buffer类》,这篇给大家分享《Java避坑指南!IDEA查看.class文件源码下载失败问题汇总》。
大家有和小编同样遇到过这样的问题吗?调用一个方法,发现看不了源码,点击Download Sources 然后提示失败!这个下载源码失败的简直 烦!烦!烦!神烦!!!
正常来说我们看不到源码还可以看得到方法的实现,但是本人这个就坑了,只能看到方法的定义看不到方法的实现,试了很多的方法,浪费了一天时间终于解决了,小编在此汇总一下各类解决办法,希望可以帮到大家;
这个方法对于我的问题当然是毫无作用,但是他可以解决一些 我们的maven下载失败啊或者一些jar包报红线的问题(ps:报红线,应该是idea的问题,没有刷新过来,这个时候可以对以上按钮进行“狂点”)
没有勾选的可以选择打上对勾,当然这个对我也没什么用,他这个勾选只是代表着idea会帮你自动下载源码,对于我们来说并没有什么用,我们也可以点击右上角的提示手动下载,还可以剩空间(ps:手动狗头)
有的人可能会是idea版本和maven版本不兼容问题导致的,小编使用的maven是自己下载的3.9的版本,小编也试了一下这个方法,只能说是 !!!
到了这一步我发现该设置的都设置好了,虽然这些设置并没有解决我的问题,但还是要记录一下的,说不定有人会因为设置问题导致依赖包下载不下来.
这个方法解决了很多人的问题,但是对于小编,依然 没起作用!
右键-> maven -> 点击Open\’settings.xml\’ , 刚开始这个位置是Create \’settings.xml\’ ,打开之后添加在里面添加了镜像服务器:
这个方法会导致很多jar包⌚标红,大家刷新一下maven或者把仓库里的jar删了从新下一下就OK了!
至此小编的问题依然没有得到解决idea还是只能看到方法的实现,也不能下载源码,因为我们maven用的是公司自己的私服,然后觉得还是看一下公司maven仓库吧,打开web端仓库 发现公司仓库里的jar包没有源码包所以下载不了,当然无法下载源码的问题解决了;
这样就完了吗?阿芙卡丝闹特!小编的问题还有解决啊!
但是小编的问题是 只能看到方法的定义,无法看到方法的实现,最终觉得这个可能是idea反编译的问题,一顿百度,一顿找,罪魁祸首终于浮出水面
这个插件在下载idea的时候会自动打勾,小编用的mac,所以可能是文件下载的权限问题或者其他原因导致的 我的这个插件没有打勾!
打勾->重启idea->打开源码包
终于出来了,肉牛满面啊!!!
ok!文章到此就结束了,终其原因,其实还是个人对Java,对maven不够了解走了很多弯路,希望可以对大家有帮助,让大家少走一些弯路,有不对的地方希望大家可以提出来的,共同成长;
细节之中只有天地,整洁成就卓越代码
- 以上就是《Java避坑指南!IDEA查看.class文件源码下载失败问题汇总》的分享。
- 也欢迎大家交流探讨,该文章若有不正确的地方,希望大家多多包涵。
- 创作不易,你们的支持就是我最大的动力,如果对大家有帮忙给个赞哦~~~
本文作者及来源:Renderbus瑞云渲染农场https://www.renderbus.com
文章为作者独立观点不代本网立场,未经允许不得转载。