使用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

点赞 0
收藏 0

文章为作者独立观点不代本网立场,未经允许不得转载。