Ich versuche einen Web-Scraper zu erstellen, der die Top-100-Musik für jeden Tag des Jahres sammelt. Im Moment versuche ich, die Funktion zu schreiben, die den Quellcode sammelt. Ich habe es einfach kopiert und eingefügt von meinem anderen Schaber, aber aus irgendeinem seltsamen Grund gibt es eine leere Liste zurück.Quellcode abrufen // Dateireader // gibt leere Liste zurück
Ich glaube, wir arbeiten mit der Funktion get_source_code, aber ich könnte falsch liegen. Es werden keine Fehlermeldungen zurückgegeben. Hilfe wäre sehr dankbar im Voraus.
import java.util.ArrayList;
import java.io.InputStreamReader;
import java.net.URL;
import java.util.List;
import javax.net.ssl.HttpsURLConnection;
import java.io.BufferedReader;
import java.io.IOException;
public class MusicScraper {
public static void main(String [] args)throws IOException {
parse_source_code(get_source_code("","",""));
}
public static List<String> get_source_code(String day, String month, String year)throws IOException{
List <String> sourceC = new ArrayList<>();
URL link = new URL("https://www.billboard.com/charts/hot-100/2017-02-25"); //"http://www.billboard.com/charts/hot-100/" + year + "-" + month + "-" + day);
HttpsURLConnection billboardConnection = (HttpsURLConnection) link.openConnection();
billboardConnection.setRequestProperty("User-Agent", "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.4; en-US; rv:1.9.2.2) Gecko/20100316 Firefox/3.6.2");
billboardConnection.connect();
BufferedReader in = new BufferedReader(new InputStreamReader(billboardConnection.getInputStream()));
String inputLine;
while ((inputLine = in.readLine()) != null) {
sourceC.add(inputLine);
}
System.out.println(sourceC);
return sourceC;
}
public static List<String> parse_source_code(List<String> sourceCode){
List<String> data = new ArrayList<>();
List<String> rank = new ArrayList<>();
List<String> song = new ArrayList<>();
List<String> artist = new ArrayList<>();
for (int i = 0; i < sourceCode.size(); i++) {
if (sourceCode.get(i).contains("data-songtitle=\"")) {
String parsedSong = sourceCode.get(i).split("data-songtitle=\"")[1].split("\">")[0];
song.add(parsedSong);
}
}
System.out.println(song);
return sourceCode;
}
}
Dies macht Sinn, danke. Obwohl es Sinn macht, erhalte ich jetzt eine neue Fehlermeldung, weil es kein https ist, wie im Code angegeben, welchen Code ich hinzufügen oder entfernen müsste. – Jblue
Egal, ich habe es zu arbeiten, danke, du bist so sehr. – Jblue
@Jblue möchten Sie 'HttpURLConnection' anstelle von' HttpsURLConnection' verwenden. – explv