我想抓取雅虎并获得与关键字匹配的前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);
}
}
我没有得到任何结果。任何人都可以帮助我吗?
答案 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...
最后,如果您的打印报表已被注释掉,您将如何获得任何结果?