gpt4 book ai didi

java - 用 Java 下载 Pandora 源代码?

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:51:42 26 4
gpt4 key购买 nike

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

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

具体来说,我想从 www.pandora.com/profile/stations/olin_d_kirkland 等站点获取站点名称

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

我认为我没有获取 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 上用户喜欢的所有歌曲的完整列表。

最佳答案

Pandora 页面大量使用 ajax 构建,因此许多爬虫都在挣扎。在您上面显示的情况下,查看电台列表时,该页面实际上通过辅助请求发送到:

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

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

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

这将以 5 组为一组拉回喜欢的轨道,但您可以通过增加“thumbStartIndex”参数来翻阅结果。

关于java - 用 Java 下载 Pandora 源代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11633787/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com