提前感谢您的时间。代码应该连接到网站,并从具有用户输入的单词的行中刮取OS模型。它将搜索单词,转到该行,并在该行的该行上刮取OS属性。我不知道为什么我的代码不起作用,并希望得到一些帮助。
这是网站http://www.tabletpccomparison.net/
以下是代码:
import java.io.IOException;
import java.util.Iterator;
import java.util.Scanner;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
public class ExtraPart1 {
public static void main(String args[]) throws IOException{
Scanner input = new Scanner(System.in);
String word = "";
System.out.println("Type in what you are trying to search for.");
word = input.nextLine();
System.out.println("This program will find a quality from a website for it");
String URL = "http://www.tabletpccomparison.net/";
Document doc = Jsoup.connect(URL).get();
Elements elements = doc.select("a");
for(Element e : elements){
if(e.equals(word)){
String next_word = e.getElementsByClass("tableJX2ope_sis").text();
System.out.print(next_word);
}
}
}
}
答案 0 :(得分:1)
问题在于:
if(e.equals(word)){
String next_word = e.getElementsByClass("tableJX2ope_sis").text();
System.out.print(next_word);
}
e
是Element
,与String
进行比较。试试这个:
if(e.text().equals(word)) {
// ...
}
您可以像这样简化for循环:
String cssQuery = String.format("a:containsOwn(%s)", word);
Elements elements = doc.select(cssQuery);
for(Element e : elements){
String nextWord = e.getElementsByClass("tableJX2ope_sis").text();
System.out.print(nextWord);
}
答案 1 :(得分:0)
您的CSS selector应直接定位您正试图抓取的table
中的链接。通过仅选择a
,您将必须迭代文档上的每个链接。
String selector = String.format(
"table.tableJX tr:contains(%s) > td.tableJX2ope_sis > span.field", word);
for (Element os : doc.select(selector))
System.out.println(os.ownText());