楼上的写的没错,不过感觉太麻烦了,用hutool工具包来写个方法
HttpUtil.downloadFile("https://www.baidu.com/img/PCtm_d9c8750bed0b3c7d089fa7d55720d6cf.png", new File("F://demo4/baidu_logo.png"))
第一个参数为百度logo图片,第二个为我本地下载位置,下载结果如图
通过httpclient来爬取网站内容,分析当前内容页中的图片‘规则’抓取一般都是模拟浏览器访问目标网页,通过返回的页面html代码进行分析自己需要的数据
查找规则,例如你爬取的网页 ,看到当前页面显示的图片格式如下<img src="http://www.baidu.com/img/20101025_user.png">
通过解析爬取的网页源代码(html)进行字符串的操作即可,现在有相应的第三方jar包可以帮你更快的完成这部分工作,例如htmlpaser,获取到对应的地址,然后进行保存或下载。
你可以搜索,java爬虫(httpclient)和htmlpaser做更多的了解。
朋友我还是告诉你思路先:用流的方法,先获取地址,再用 URLConnection 函数获取输入流,有了输入流,之后把数据弄进输出流里。代码如下public static void main(String[] args) {
Scanner s=new Scanner(System.in)//在显示面板上手动输入的函数
int k=0//配合输出数据用的
System.out.println("请你输入下载地址")
String dz=s.nextLine()://地址如:http...的,把输入的数据放进DZ变量里
URL url=new URL(dz)
URLConnection c=url.openConnection()//返回一个Connection对象。
InputStream in=c.getInputStream()//读取的输入流。
String fname = url.getFile().substring(url.getFile().lastIndexOf("/") + 1)//
"这是一个网站"http://www.111.com/kk/1.mp3",url.getFile().lastIndexOf("/") + 1这句意思是到网站最后一个"/",根据上面的网址/1.mp3,后面再加一位,结果就是1.mp3,它作用是在此字符串中最右边出现的指定子字符串的索引(数字)。
substring这个函数是可以从字符串第几个数字开始并返回一个新的字符串。
这句话的意思是:lastIndexOf("/")+1找到最后一个像"/"字符,然后移一位在哪个位置设一个索引(数字),然后substring是根据这个索引(数字)找到后面那些字符串。
String xxx=fname.substring(fname .lastIndexOf(".")+1)//取文件的后续名(.mp3、.rmvb)之类
System.out.println("输入文件名:")
String bcwj=s.nextLine()
FileOutputStream out=new FileOutputStream("D:/m/"+bcwj+"."+xxx)
System.out.println("开始下载")
while((k=in.read())>=0){
out.write(k)
out.flush()
}
out.close()
in.close()
System.out.println("下载完成")
}