【问题标题】:Jsoup - how to scrape radio website for currently playing song?Jsoup - 如何抓取当前播放歌曲的广播网站?
【发布时间】:2018-09-15 22:37:49
【问题描述】:

我正在使用 jsoup 制作一个程序来为当前播放的歌曲和艺术家抓取某个广播网站。我已按照本教程进行操作:https://www.youtube.com/watch?v=C1b74N1rgQQ,但无法从网站获取正确数据。

我想访问这个广播网站:https://indie88.com/ 并显示当前正在播放的歌曲(和艺术家)。

到目前为止,这是我的代码:

package jsoupTest;

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;

import java.io.IOException;

public class indie88 {

public static void main(String[] args) throws IOException {

    Document document = (Document) Jsoup.connect("https://indie88.com/").get();
    Element e = document.getElementById("page");
    String text = e.getElementsByTag("span").get(2).text(); 
    System.out.println(text);

}

通过运行此代码,我得到“搜索”。我认为这与 .get(2) 或 html 中的“span”标签有关,但我不确定。这是我第一次使用 jsoup,任何建议都会有助于我如何让它显示当前正在播放的歌曲(位于页面顶部)。

另外 - 我如何知道何时使用 getElementsByTag 和 getElementsByClass 等?有没有办法指定使用哪个“span”标签?它似乎没有从正确的人那里获取信息。

【问题讨论】:

    标签: java html web-scraping jsoup


    【解决方案1】:

    当您使用浏览器访问https://indie88.com/ 时,该站点会加载更多文件。您要查找的信息位于 https://indie88.com/wp-content/themes/indie88/inc/streamon.php,因此要获取它,请尝试以下操作:

    final String url = "https://indie88.com/wp-content/themes/indie88/inc/streamon.php"; 
    Document doc = Jsoup.connect(url).get();
    System.out.println(doc.body().text());
    

    一个样本输出是 -

    {"艺术家":"韦恩喷泉","title":"史黛西的妈妈","end":"1522993371.161780"}

    现在您可以使用一些 JSON 库或正则表达式来提取艺术家和标题。

    【讨论】:

    • 你怎么知道去那个 url 来获取信息?我可以为其他广播网站这样做吗?
    • 嗯,每个站点都与其他站点不同。在这种情况下,我打开了浏览器的开发工具并检查了它从站点下载的文件。然后我检查了这些文件,看看它们是否包含信息。有些网站使用 JS 来显示信息,所以在这些情况下 jsoup 是没有用的。这次很简单,但正如我所说 - 每个站点可能需要不同的技术。
    猜你喜欢
    • 1970-01-01
    • 2011-04-10
    • 2016-05-19
    • 2017-11-21
    • 2023-04-04
    • 2010-11-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多