java怎么下载链接图片_Java爬虫已获取图片链接但是无法下载图片

利用爬虫在html中获取的相应图片资源src的代码是这样的

149ffdfee16e76b591b60ce4d6404435.png

但是再通过代码将资源转成链接的形式下载图片的时候,就报了400的错误

9725ddeacc853f35306dabc3eb933e49.png

然而,我使用chrome去测试链接是否存在是,发现,真正对方网站服务器能够识别的是

8c27f3e7dad6c135974f2453464e76fa.png

请各位大神指导之后应该怎么办,我在网上查了好多资料,还是没有解决办法。

ps:奇怪的是我用Firefox的话,上面的那个链接也能得到图片,我就百思不得其解了。

代码:

public class Image

{

private String urlNeo="";

public String getUrlNeo() {

return urlNeo;

}

public void setUrlNeo(String urlNeo) {

this.urlNeo = urlNeo;

}

public String getHtml() throws Exception{

ArrayList list=new ArrayList();

String line="";

String Html="";

URL url=new URL(urlNeo);

URLConnection connection=url.openConnection();

InputStream in=connection.getInputStream();

InputStreamReader isr=new InputStreamReader(in);

BufferedReader br=new BufferedReader(isr);

while((line=br.readLine())!=null){

Html+=line;

list.add(line);

}

br.close();

isr.close();

in.close();

return Html;

}

public String getImgSrc() throws Exception{

String html=getHtml();

String IMGURL_REG_xpath="//div[1]/div[2]/div[2]/div/node()";

String imginfomation="";

JXDocument jxDocument = new JXDocument(html);

imginfomation=(jxDocument.sel(IMGURL_REG_xpath).toString()).substring(1,jxDocument.sel(IMGURL_REG_xpath).toString().length() - 1);

return imginfomation;

}

public List getImgXpath() throws Exception{

String str="";

String IMGSRC_REG = "img.product.\\w.*.jpg";

List list1=new ArrayList();

List list2=new ArrayList();

String listimg = getImgSrc();

Matcher matcher = Pattern.compile(IMGSRC_REG).matcher(listimg);

while (matcher.find()) {

list1.add(matcher.group());

}

for(int i=1;i<=(list1.size()/2);i++){

int j=i*2;

list2.add(list1.get(j-1));

}

return list2;

}

public void download(String admin_no) throws Exception{

List list=new ArrayList();

list=getImgXpath();

for(String img:list){

System.out.println(img);

String url="http://www.neofactory.co.jp/"+img;

URL uri=new URL(url);

URLConnection con=uri.openConnection();

con.setConnectTimeout(5000);

InputStream in=con.getInputStream();

byte[] buf=new byte[1024];

int length=0;

File sf=new File("D:\\item_neo_photo\\"+admin_no);

if(!sf.exists()){

sf.mkdirs();

}

String[] a=img.split("/");

OutputStream os=new FileOutputStream(sf.getPath()+"\\"+a[a.length-1]);

while((length=in.read(buf))!=-1){

os.write(buf, 0, length);

}

os.close();

in.close();

}

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值