gpt4 book ai didi

java - Jsoup imdb 评分

转载 作者:行者123 更新时间:2023-11-29 04:42:12 27 4
gpt4 key购买 nike

我编写了一个程序,它读取 imdb 上排名前 250 的电影的名称和评分,并返回评分的平均值。我有以下程序

import java.io.IOException;

import org.jsoup.*;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
public class da {

/**
* @param args
*/
public static void main(String[] args) {
try {


Document doc=Jsoup.connect("http://www.imdb.com/chart/top").get();
Elements e=doc.getElementsByClass("titleColumn");
Elements t=doc.getElementsByClass("imdbRating");
float suma=0;
for(int i=0;i<e.size();i++)
suma=suma+Float.parseFloat(t.get(i).text());

System.out.println(suma/250);


} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}


}

}

我的问题是为什么在“t”中它需要“imdbRating”,因为如果我查看页面上的 html,我会看到评级所在的位置写着“ratingColumn imdbRating”(我错误地执行了这个程序,但我没有'不知道为什么它以这种方式而不是另一种方式工作)

最佳答案

在此程序中不需要元素 e。网页中的 titleColumn 只包含电影的标题。考虑到您只需要收视率,这是不必要的。当我重命名为 ratings 并稍微清理一下代码时,您可以只使用 t 元素:

    import java.io.IOException;

import org.jsoup.*;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
public class da {

/**
* @param args
*/
public static void main(String[] args) {
try {

Document doc = Jsoup.connect("http://www.imdb.com/chart/top").get();
Elements ratings = doc.select(".ratingColumn.imdbRating");

float suma = 0;

for(int i = 0; i < ratings.size(); i++)
suma = suma + Float.parseFloat(ratings.get(i).child(0).text());

System.out.println(suma/250);


} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}


}

}

编辑:要选择具有多个类的元素,您必须使用 doc#select 并像上面那样向它传递一个 CSS 查询。

关于java - Jsoup imdb 评分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38752131/

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