Я хочу просканировать yahoo и получить 10 лучших результатов, соответствующих ключевому слову.
Я использую эту ссылку для сканирования результатов
Код, который я использую для этого:
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);
}
}
Я не получаю никаких результатов. Может кто-нибудь мне помочь?
Этот селектор ошибочен.
doc.select("div#doc.uh3-p uh3lite")
Если вы хотите выбрать два класса, используйте период .
перед каждым именем класса.
doc.select("div#doc.uh3-p.uh3lite")
Пространство в селекторе означает нечто совершенно другое.
EDIT: Кроме того, вы ссылаетесь на 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...
И, наконец, как вы узнаете, получаете ли вы какие-либо результаты, так как ваши заявления о печати закомментированы?