Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/399.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用Java下载潘多拉源码?_Java_Download - Fatal编程技术网

用Java下载潘多拉源码?

用Java下载潘多拉源码?,java,download,Java,Download,我正在尝试用Java下载www.pandora.com/profile/stations/olin_d_kirklandHTML,以匹配我从Chrome网页的上下文菜单中选择“查看页面源代码”时得到的内容 现在,我知道了如何用Java下载网页HTML源代码。我用downloads.nl完成了它,并在其他网站上进行了测试。然而,潘多拉是一个谜。我的最终目标是从潘多拉账户解析“站点” 具体来说,我想从www.pandora.com/profile/stations/olin_d_kirkland 我

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

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

具体来说,我想从
www.pandora.com/profile/stations/olin_d_kirkland

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

我认为这是因为我没有抓取JavaScript或让JavaScript先执行,但即使我等待它加载到我的代码中,我也只能得到相同的结果

如果可能的话,我应该有一个名为“grabPageSource()”的方法来返回字符串。调用时,它应该返回源代码


公共类PandoraStationFinder{
公共静态void main(字符串[]args)引发IOException、InterruptedException{
字符串s=grabPageSource();
字符串[]行=s.split(“\n\r”);
字符串t;
ArrayList stations=新的ArrayList();
对于(int i=0;i

这与它是如何完成的无关,但我想在最终产品中,获取用户在潘多拉上喜欢的所有歌曲的综合列表。

这不是一个确切的答案,但希望这能让您朝着正确的方向前进:


每当我遇到这种情况时,我总是求助于HTTP监控工具。我使用firefox,我非常喜欢它的扩展。检查往返的报头是什么,然后相应地定制您的http请求。作为一个绝对最低级别的测试,从一个成功的请求中获取头文件,然后使用telnet将其发送到端口80,然后查看返回的内容。

Pandora页面大量使用ajax构建,因此许多刮刀都很费劲。在上面所示的情况下,查看站点列表,页面实际上会发出一个次要请求:

如果你运行你的请求,但是把它指向那个URL而不是主站点,我想你的抓取会更幸运

同样,要访问“likes”,您需要以下URL:


这将以5人一组的方式收回喜欢的曲目,但您可以通过增加“thumbStartIndex”参数来翻阅结果。

我已经搜索了web,包括stackoverflow。我并不是只发布一个问题而不尝试发布的所有其他解决方案。这个链接很有用,但不能解决潘多拉的问题。好的,很好。然而,有几个人在发布之前没有这样做,因为你没有说你尝试了该页面上的一些选项,我想我会发布它…是的,我想知道如果你登录(已经验证了你自己),html中是否会包含其他项目。另外,线路长度是否标准?web浏览器窗口中的行长度是否与程序中的相同?您是否考虑过使用非官方API?它不是“官方”支持的,但被很多人使用,所以可能比自己滚动更可靠?你能说得更详细些吗?对我来说,你说的话听起来很像行话,可能是因为我对使用代码与web进行交互还不熟悉。对不起,奥林-这是非常基本的HTTP内容,我只是不确定这是否是进入它的场所。。。您是否尝试过加载扩展并查看标题是如何来回的?如果您真的要深入了解这一点,那么有必要了解一些有关HTTP在幕后如何工作的教程。在您使用telnet与web服务器交互之前,您真的无法“了解”它的工作原理(双关语)。我一直有点忙,我想我会回到潘多拉计划。谢谢你的回答。这太完美了。太好了!我一定会在某个时候将您链接到我完成的应用程序(希望它成为Windows 8应用程序)我得到的只是:电台显示更多它会为我返回完整列表,您是否尝试过将其加载到浏览器中?我有。这让我得到了我需要的所有信息。但是,我正在尝试使用Java获取个性化信息。。。
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;
    }
}