如何使用JSOUP从新行中的URL获取数据?

时间:2018-04-10 04:40:40

标签: java arrays arraylist jsoup html-parsing

我正在取消250部电影的IMDB图表。我想将每个电影名称存储在一个数组中,但我不知道为什么它将所有电影名称放入第一个索引,即Array [0]。 以下是我的代码。

任何人都可以帮助我。我要完成另一个项目,这是需要的主要内容。 如果你能指导我任何网站或教程,我将非常感谢你。

    try {
        Document doc = Jsoup.connect("http://www.imdb.com/chart/top").userAgent("Mozilla").get();

        int counterVariable = 0;
        for (Element el : doc.select(".lister-list")) {

            mString[counterVariable] = el.select(".titleColumn").text();

            totalNumberOfLines++;
            counterVariable++;
        }
    } catch (Exception e) {
        System.out.println("Sorry website couldn't be opened");
        System.out.println(e);
    }

    System.out.println(mString[0]);// It's putting all the names into this index

1 个答案:

答案 0 :(得分:0)

问题是你只有一个元素匹配选择器.lister-list,所以迭代它没有多大意义。当你调用el.select(".titleColumn").text();时,Jsoup连接所有匹配元素的文本。这就是您将所有结果都放在一个元素中的原因。相反,您可以尝试选择所有td个标记,其中tittleColumn个属于tr元素的子级.lister-list

for (Element el : doc.select(".lister-list > tr > td.titleColumn")) {
   mString[counterVariable] = el.text();
   totalNumberOfLines++;
   counterVariable++;
}

有关jsoup css选择器的更多信息,您可以了解here