2016-05-21 10 views
0

Ich versuche, eine Seitenquelle von Amazon zu speichern, damit ich den Preis eines Artikels sehen kann. Wenn ich versuche, es in einer Datei zu speichern, speichert es nur ungefähr 60 Zeilen, von denen die meisten Leerraum sind. Ich kann die Quelle von meinem Browser sehen und es sind Tausende von Zeilen lang. Es gilt für jede Seite, die ich suche. Heres der Link, den ich versuchte: http://www.amazon.com/gp/product/B015WCV70W/ref=s9_simh_gw_g147_i2_r?ie=UTF8&fpl=fresh&pf_rd_m=ATVPDKIKX0DER&pf_rd_s=desktop-2&pf_rd_r=0XHXJAF2NQ35BP5Y435K&pf_rd_t=36701&pf_rd_p=dc68ddd1-99ac-45e5-8c23-e9e0811a2b2c&pf_rd_i=desktopSeite speichern Quelle von Amazon in Java

Gibt es einen einfacheren Weg, dies zu tun?

Hier ist mein Code:

import java.io.BufferedReader; 
import java.io.BufferedWriter; 
import java.io.FileWriter; 
import java.io.IOException; 
import java.io.InputStream; 
import java.io.InputStreamReader; 
import java.net.URL; 
import java.net.URLConnection; 
import java.util.Scanner; 


public class DownloadPage { 

    public static final Scanner in = new Scanner(System.in); 

    public static void main(String[] args) throws IOException { 

     System.out.print("Enter URL: "); 
     savePage(in.nextLine()); 

    } 

    static void savePage(String entURL) throws IOException{ 
     URL url = new URL(entURL); 
     URLConnection con = url.openConnection(); 
     InputStream is = con.getInputStream(); 

     BufferedWriter bw = new BufferedWriter(new FileWriter("text.txt")); 
     BufferedReader br = new BufferedReader(new InputStreamReader(is)); 
     String line = null; 
     int count = 0; 
     while (br.ready()) { 
      bw.write(br.readLine()); 
      bw.newLine(); 
      count++; 
     } 
     line = null; 
     bw.close(); 
     System.out.println("wrote successfully " + count); 
    } 
} 

Sorry, wenn ich es nicht richtig formatiert, dessen mein erster Beitrag.

Antwort

0

Dies liegt daran, Sie br.ready() verwenden, so jedes Netzwerk Pause veranlassen, das Ende des Zyklus Dieser Block gibt mir 20632 Zeilen HTML

int count = 0; 
while (true) { 
    String line = br.readLine(); 
    if (line == null) { 
     break; 
    } 
    bw.newLine(); 
     count++; 
} 
0

Die URL ist nur ein Ladepunkt für eine Javascript-App, die den HTML-Code in Ihren Browser rendert.

Wenn Sie die gerenderte Seite erfassen möchten, versuchen Sie Selenium/WebDriver, die einen Browser emuliert (und eine Javascript-App ausführen wird).

Verwandte Themen