繁体   English   中英

用Java下载Pandora源代码?

[英]Download Pandora source with Java?

我正在尝试使用Java下载www.pandora.com/profile/stations/olin_d_kirkland HTML以匹配从Chrome网页的上下文菜单中选择“查看页面源”时获得的内容。

现在,我知道如何使用Java下载网页HTML源代码。 我已经使用downloads.nl完成了它,并在其他网站上进行了测试。 然而,潘多拉是一个谜。 我的最终目标是从Pandora帐户解析“电台”。

具体来说,我想从www.pandora.com/profile/stations/olin_d_kirkland等网站上获取电台名称。

我曾尝试在Java中使用selenium库和内置的URL getter,但是当我得到5300时,我只能获得~4700行代码。更不用说代码中没有个性化数据,这就是我所说的。我正在寻找。

我想是因为我没有抓住JavaScript或让JavaScript先执行,但即使我等待它加载我的代码,我也只会得到相同的结果。

如果可能的话,我应该有一个名为'grabPageSource()'的方法返回一个String。 它应该在被调用时返回源代码。


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上喜欢的所有歌曲的综合列表。

Pandora页面使用ajax进行了大量构建,因此许多刮刀都在努力。 在上面显示的情况下,查看工作站列表,页面实际上会通过以下次要请求:

http://www.pandora.com/content/stations?startIndex=0&webname=olin_d_kirkland

如果您运行您的请求,但将其指向该网址而不是主网站,我认为您的抓取工作会更加幸运。

同样,要访问“赞”,您需要以下网址: http//www.pandora.com/content/tracklikes? likeStartIndex = 0& thumbStartIndex = 0 & webname= olin_d_kirkland

这将以5为一组拉回喜欢的曲目,但您可以通过增加'thumbStartIndex'参数来浏览结果。

不完全是答案,但希望这会让你朝着正确的方向前进:

每当我遇到这种情况时,我总是会依赖HTTP监控工具。 我使用firefox,我真的很喜欢Live HTTP Headers扩展。 查看来回的标题,然后相应地定制您的http请求。 作为绝对最低级别的测试,从成功的请求中获取标头,然后使用telnet将其发送到端口80并查看返回的内容。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM