Поиск ответов Yahoo с помощью Jsoup

1

Я хочу просканировать 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); 
    }
}

Я не получаю никаких результатов. Может кто-нибудь мне помочь?

  • 0
    Вы читали файл robots.txt для сайта? Я почти уверен, что он не позволяет сканировать веб-страницы.
  • 0
    @JechtTyre Yahoo позволяет нам сканировать его искомые ссылки .. Я смог просканировать данные ..
Показать ещё 4 комментария
Теги:
jsoup

1 ответ

1
Лучший ответ

Этот селектор ошибочен.

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...

И, наконец, как вы узнаете, получаете ли вы какие-либо результаты, так как ваши заявления о печати закомментированы?

  • 0
    спасибо за ваше предложение, но все равно я не получаю результата
  • 0
    Я могу использовать остальные ваши селекторы просто отлично. Вы должны обновить свой код в оригинальном сообщении. Пожалуйста, примите во внимание методы форматирования кода, которые я отредактировал в вашем посте, и примените их к исходному коду.
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню