如何找到与Jsoup匹配单词的所有锚点?

时间:2016-07-21 17:33:56

标签: java html web-scraping jsoup

提前感谢您的时间。代码应该连接到网站,并从具有用户输入的单词的行中刮取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);
        }
    }

}
}

2 个答案:

答案 0 :(得分:1)

问题在于:

if(e.equals(word)){
        String next_word = e.getElementsByClass("tableJX2ope_sis").text();
        System.out.print(next_word);
}

eElement,与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());