www.pandora.com/profile/stations/olin_d_kirkland
ChromeのWebページのコンテキストメニューから[ページソースの表示]を選択したときに取得するものと一致するように、JavaでHTMLをダウンロードしようとしています。
これで、Javaを使用してWebページのHTMLソースコードをダウンロードする方法がわかりました。私はdownloads.nlでそれを行い、他のサイトでテストしました。しかし、パンドラは謎に包まれています。私の最終的な目標は、Pandoraアカウントから「ステーション」を解析することです。
具体的には、次のようなサイトから駅名を取得したいwww.pandora.com/profile/stations/olin_d_kirkland
セレンライブラリと組み込みのURLゲッターをJavaで使用しようとしましたが、5300を取得する必要があるときに、最大4700行のコードしか取得できません。コードにパーソナライズされたデータがないことは言うまでもありません。 m探しています。
JavaScriptを取得したり、JavaScriptを最初に実行したりしていないのではないかと思いましたが、JavaScriptがコードに読み込まれるのを待っていても、常に同じ結果が得られるだけでした。
可能であれば、文字列を返す「grabPageSource()」というメソッドが必要です。呼び出されたときにソースコードを返す必要があります。
public class PandoraStationFinder {
public static void main(String[] args) throws IOException, InterruptedException {
String s = grabPageSource();
String[] lines = s.split("\n\r");
String t;
ArrayList stations = new ArrayList();
for (int i = 0; i < lines.length; i++) {
t = lines[i].trim();
Pattern p = Pattern.compile("<a href=\"/station/\\d+\">[\\w\\s]+</a>");
Matcher m = p.matcher(t);
if (m.matches() ? true : false) {
Station someStation = new Station(t);
stations.add(someStation);
// System.out.println("I found a match on line " + i + ".");
// System.out.println(t);
}
}
}
public static String grabPageSource() throws IOException {
String fullTxt = "";
// Get HTML from www.pandora.com/profile/stations/olin_d_kirkland
return fullTxt;
}
}
それがどのように行われるかは関係ありませんが、最終製品で、Pandoraのユーザーが気に入ったすべての曲の包括的なリストを取得したいと思います。