suchen

Heim  >  Fragen und Antworten  >  Hauptteil

Webcrawler – Der Java-Crawler hat den Bildlink erhalten, kann das Bild jedoch nicht herunterladen

Der vom Crawler in HTML erhaltene Code der entsprechenden Bildressource src lautet wie folgt

Aber als ich die Ressource per Code in einen Link umwandelte, um das Bild herunterzuladen, wurde ein 400-Fehler gemeldet

Allerdings habe ich Chrome verwendet, um zu testen, ob der Link existiert, und festgestellt, dass der Website-Server der anderen Partei tatsächlich

erkennen kann

Das heißt, der Link zum Abrufen von Bildressourcen über die Webseite lautet
http://www.neofactory.co.jp/i... 2.jpg
Der normale Link zum Abrufen von Bildern lautet jedoch
http:/ /www.neofactory.co.jp/i…

Bitte geben Sie mir eine Anleitung, was als nächstes zu tun ist. Ich habe viele Informationen im Internet überprüft, aber es gibt immer noch keine Lösung.
ps: Das Seltsame ist, dass wenn ich Firefox verwende, über den obigen Link auch Bilder abgerufen werden können, und ich bin verwirrt.

Code:

öffentliches Klassenbild
{

private String urlNeo="";
public String getUrlNeo() {
    return urlNeo;
}
public void setUrlNeo(String urlNeo) {
    this.urlNeo = urlNeo;
}
public String getHtml() throws Exception{
    ArrayList<String> list=new ArrayList<String>();    
    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="//p[1]/p[2]/p[2]/p/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<String> getImgXpath() throws Exception{
    String str="";
    String IMGSRC_REG = "img.product.\w.*.jpg";
    List<String> list1=new ArrayList<String>();
    List<String> list2=new ArrayList<String>();
    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<String> list=new ArrayList<String>();
    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();
    }
}

}

黄舟黄舟2741 Tage vor566

Antworte allen(2)Ich werde antworten

  • 高洛峰

    高洛峰2017-05-17 10:03:58

    直接把域名+获取的img src属性拼起来不行么

    Antwort
    0
  • 过去多啦不再A梦

    过去多啦不再A梦2017-05-17 10:03:58

    url编码下

    Antwort
    0
  • StornierenAntwort