无法使用JSoup从HipHopEarly网站获取艺术家+曲目列表

时间:2014-10-14 23:43:13

标签: java jsoup

我开始对我的这个小项目感到沮丧。奇怪的是我让程序在某一点上运作。我回来为程序添加了一点,它不再抓取任何东西。我假设网站改变了一点点?

如果我只是犯了一个愚蠢的错误,我会提前道歉,因为我还是编程新手。

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

public class scraper {
    public static void main(String[] args) {
        String url = "http://www.hiphopearly.com/tracks";
        Document doc = Jsoup.connect(url).get();
        Elements tracks = doc.select("#left-column div.tracklisting div.tracks div.track");
        for (Element track : tracks) {
            System.out.println(track.text());
        }
    }
}

当我运行程序时,没有返回任何内容。我相当肯定问题在于内容:

doc.select("#left-column div.tracklisting div.tracks div.track");

如何确定抓取艺术家和曲目标题的正确CSS路径? 我尝试复制并粘贴Chrome浏览器自动提供的CSS路径,但没有运气。

1 个答案:

答案 0 :(得分:1)

按如下方式更改您的代码:

String url = "http://www.hiphopearly.com/tracks";
Document doc = Jsoup.connect(url)
    .userAgent("Mozilla/5.0 (X11; Linux x86_64; rv:32.0) Gecko/20100101 Firefox/32.0")
    .get();

Elements tracks = doc.select("#left-column div.track-listing div.tracks div.track");
for (Element track : tracks) {
    System.out.println(track.text());
}

这种情况经常发生 - 网站根据客户的使用情况生成不同的内容。 Pshemo几乎是正确的 - 如果您在浏览器中获得JavaScript模板(例如AngularJS),他会提到这种情况(您可以通过显示网站的来源,而不是显示已呈现的Firebug来检查它)结果)。

第二件事是跟踪列表已更改为" track-listing"。