使用Jsoup搜索Yahoo Answers

时间:2014-04-27 06:12:57

标签: java jsoup

我想抓取雅虎并获得与关键字匹配的前10个结果。

我正在使用this链接抓取结果

我正在使用的代码是:

public static void main(String args[]) throws IOException
{
    try
    {
        Document doc = Jsoup.connect("https://in.search.yahoo.com/search;_ylt=AibrWnqoneznrEAiS9bG0aOuitIF?p=solar+systems&toggle=1&cop=mss&ei=UTF-8&fr=yfp-t-405").get();
            for(Element dc : doc.select("div#doc.uh3-p uh3lite"))
        {
            System.out.println("data");
                    for(Element dd : doc.select("div#bd"))
            {
                for(Element results : doc.select("div#results"))
                {
                    for(Element wb : doc.select("div#web"))
                    {
                        Elements data=wb.select("span");
                        if(data.size()>0)
                        {
                               System.out.println(data.get(0).text());
                        }
                    }
                }
            }
        }
    }
    catch(Exception ex)
    {
        System.out.println(ex); 
    }
}

我没有得到任何结果。任何人都可以帮助我吗?

1 个答案:

答案 0 :(得分:1)

这个选择器错了。

doc.select("div#doc.uh3-p uh3lite")

如果要选择两个班级,请在每个班级名称前使用句点.

doc.select("div#doc.uh3-p.uh3lite")

选择器中的空格意味着完全不同的东西。

编辑:此外,您在每个嵌套for循环选择器中返回doc。我假设您的意思是引用前一个for循环中的选定元素。

    for(Element dc : doc.select("div#doc.uh3-p uh3lite"))
    {
        System.out.println("data");

        for(Element dd : dc.select("div#bd")) // note doc was changed to dc
        {
            for(Element results : dd.select("div#results")) // note doc was changed to dd
            {
                // etc...

最后,如果您的打印报表已被注释掉,您将如何获得任何结果?