2016-05-07 9 views
0

In meinem kleinen App im Rahmen des „Jsoup“ zum Herunterladen der html, aber das Problem ist, dass mein Code mit einigen URLs nicht funktionieren. Dies ist mein Code:Warum kann Jsoup keine Verbindung mit einer URL herstellen?

public static void main(String[] args) { 

    String html=null; 

    //Descargamos el html 
    String url = "http://www.opposingviews.com"; 
    Connection conn = Jsoup.connect(url); 
    try { 
     Response resp = conn.execute(); 
     if (resp.statusCode() != 200) { 
      System.out.println("Error: "+resp.statusCode()); 
     }else{ 
      System.out.println(Thread.currentThread().getName()+" is downloading "+ url); 
      //html = conn.get().html(); 
     } 
    }catch(IOException e) { 
      System.out.println(e.getStackTrace()); 
      System.out.println(Thread.currentThread().getName()+"No puedo conectar con "+ url); 
      System.out.println("No se puede conectar"); 
    } 

Und arbeiten nicht mit einigen Urls wie:

http://www.topix.com 
http://www.wittyfeed.com 
http://www.wittyfeed.com... 

Aber arbeiten mit anderen wie: http://www.google.com, http://www.amazon.es ...

Der Fehler

org.jsoup.helper.HttpConnection$Response.execute(HttpConnection.java:590), 
org.jsoup.helper.HttpConnection$Response.execute(HttpConnection.java:540), 
org.jsoup.helper.HttpConnection.execute(HttpConnection.java:227), 
Practica1.prueba.main(prueba.java:34) 
ist

Was kann das Problem für dieses Verhalten sein?

+0

Was ist das genaue Problem, das Sie mit diesem URLs konfrontiert sind? – Arpan

+0

Bitte fügen Sie Ihren Fehler 'StackTrace' @RandallDaniBarrientos –

+0

@VikrantKashyap der Fehler ist: [org.jsoup.helper.HttpConnection $ Response.execute (HttpConnection.java: 590), org.jsoup.helper.HttpConnection $ Response.execute (HttpConnection .java: 540), org.jsoup.helper.HttpConnection.execute (HttpConnection.java:227), Practica1.prueba.main (prueba.java:34)]. –

Antwort

2

Das erste, was müssen Sie drucken, was Ausnahme erhalten Sie, wenn Sie versuchen, die URL zu verbinden

die

ist
http://www.topix.comorg.jsoup.HttpStatusException: HTTP error fetching URL. Status=403, URL=http://www.topix.com 

So fügen Sie bitte den User-Agent wie unter

Connection conn = Jsoup.connect(url).userAgent("Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.36"); 

vorgenommenen Änderungen an Ihrem Code

import java.io.IOException; 
import org.jsoup.Connection; 
import org.jsoup.Connection.Response; 
import org.jsoup.Jsoup; 


public class JsonExample { 

    public static void main(String[] args) { 

     String html=null; 

     //Descargamos el html 
     String url = "http://www.topix.com"; 
     Connection conn = Jsoup.connect(url).userAgent("Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.36"); 
     try { 
      Response resp = conn.execute(); 
      if (resp.statusCode() != 200) { 
       System.out.println("Error: "+resp.statusCode()); 
      }else{ 
       System.out.println(Thread.currentThread().getName()+" is downloading "+ url); 
       //html = conn.get().html(); 
      } 
     }catch(IOException e) { 
      System.out.println(e.getStackTrace()); 
      System.out.println(Thread.currentThread().getName()+"No puedo conectar con "+ url + e); 
      System.out.println("No se puede conectar"); 
     } 
    } 
} 
+0

Dank @likeToCode, seine Arbeit! nur eine Frage. Ich habe eine Datei mit 5000 url zum Download (IM tatsächlich Threads), mit diesem Useragenten, ist sicher, dass alle heruntergeladen werden wil? oder hängt die jsoup.connect von UserAgent und URL ab? Dank –

+0

den User-Agent Mit ihm sollte mit allen URLs arbeiten. Sie können es versuchen und wenn irgendwelche Probleme erreichen und meine Antwort auch annehmen :-) – likeToCode

0
Elements link = doc.select("a"); 
     System.out.println(link.size()); 
     int c=0; 
     String[] prices = new String[link.size()]; 
     for (int i = 0; i < link.size(); i++) { 
      prices[i] = link.get(i).attr("href"); 
      if(prices[i].contains("https")){ 
       c++; 
       String nurl = prices[i].replace("%2B","+"); 
       String surl = nurl.replace("%3D","="); 
       String urll=prices[i]; 
       System.out.println(prices[i]); 
       URLEncoder.encode(prices[i], "UTF-8"); 
       System.out.println(c+"\t"+surl); 
//    Connection connection2 = Jsoup.connect(surl); 
//    Response doc2=connection2.execute(); 
       Document doc3 = Jsoup.connect(surl).post(); 
       //Document doc3=Jsoup.connect(makeSearch).get(); 
       String blk=doc3.html(); 
+1

Bitte erklären Sie Ihre Antwort! – rptwsthi

Verwandte Themen