您好我相对较新的Java,但我希望编写一个可以使用JSOUP在HTML文件中找到所有ALT(图像)属性的类。如果图像上没有替代文字,并且有提醒用户检查的话,我希望打印一条错误信息。
import java.io.File;
import org.jsoup.Jsoup;
import org.jsoup.parser.Parser;
import org.jsoup.nodes.Element;
import org.jsoup.nodes.Node;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.TextNode;
import org.jsoup.select.Elements;
public class grabImages {
File input = new File("...HTML");
Document doc = Jsoup.parse(input, "UTF-8", "file:///C:...HTML");
Elements img = doc.getElementsByTag("img");
Elements alttext = doc.getElementsByAttribute("alt");
for (Element el : img){
if(el.attr("img").contains("alt")){
System.out.println("is the alt text relevant to the image? ");
}
else { System.out.println("no alt text found on image");
}
}
}
答案 0 :(得分:5)
我认为你的逻辑有点偏差。
例如: 在这里,您尝试加载'img'标签的'img'属性...
el.attr("img")
这是我对该计划的实施。你应该能够根据自己的需要改变它。
public class Controller {
public static void main(String[] args) throws IOException {
// Connect to website. This can be replaced with your file loading implementation
Document doc = Jsoup.connect("http://www.google.co.uk").get();
// Get all img tags
Elements img = doc.getElementsByTag("img");
int counter = 0;
// Loop through img tags
for (Element el : img) {
// If alt is empty or null, add one to counter
if(el.attr("alt") == null || el.attr("alt").equals("")) {
counter++;
}
System.out.println("image tag: " + el.attr("src") + " Alt: " + el.attr("alt"));
}
System.out.println("Number of unset alt: " + counter);
}
}
答案 1 :(得分:0)
public class grabImages {
public static void main(String[] args) {
Document doc;
try {
doc = Jsoup.connect("...HTML").get();
Elements img = doc.getElementsByTag("img");
for (Element el : img){
if(el.hasAttr("alt")){
System.out.println("is the alt text relevant to the image? ");
}
else {
System.out.println("no alt text found on image");
}
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
el.hasAttr(“alt”)会给'alt'attr是否存在。
了解更多信息 http://jsoup.org/cookbook/extracting-data/example-list-links
答案 2 :(得分:0)
您可以使用CSS selectors选择没有img
的{{1}},而不是迭代文档中的每个alt
来简化此操作。
img