Nano Hash - криптовалюты, майнинг, программирование

Как перемещаться по веб-сайтам с помощью Jsoup в Java

Как я могу перейти (например, при сканировании веб-страниц) в Jsoup по другой ссылке?

Для этого примера я сделал основы, чтобы получить заголовок, получить ссылки и получить тексты. Но я хочу иметь возможность использовать одну из этих дочерних ссылок и перейти внутрь этой дочерней ссылки.

Например, с веб-страницы Google я хочу иметь возможность перейти на страницу YouTube, потому что это одна из дочерних ссылок в Google, и однажды на YouTube выберите другую дочернюю ссылку, а затем получите строку.

Как я смогу сделать это в Jsoup?

import java.io.IOException;

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;


public class JSoupTest {


public static void main(String args[]) {

    try {


        Document doc=Jsoup.connect("http://www.google.com").get();

        // get page title
        String title = doc.title();
        System.out.println(title);

        //gets all links
        Elements links = doc.select("a[href]");
        for (Element link : links) {

        // get the value from href attribute
        System.out.println("\nlink : " + link.attr("href"));

        }

        for( Element element : doc.select("p") )    
                    // Select all 'p'-Tags and loop over them
        {
            if( element.hasText() )                 
                    // Check if the element has text (since there are some empty too)
            {
              System.out.println(element.text()); // print the element's text
            }
        }


    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
}

}


Ответы:


1

Вам нужно получить эту страницу, т.е.

String link_addr = link.attr("href");
Document link_doc = Jsoup.connect(link_addr).get();
// do stuff with link_doc

Если вы обрабатываете много дочерних страниц одного типа, вы, вероятно, захотите создать вспомогательный метод для этого, т.е.

public void do_stuff_with(String link_addr){
  String link_addr = link.attr("href");
  Document link_doc = Jsoup.connect(link_addr).get();
  // do stuff with link_doc
}
11.06.2013
  • Если я использую Jsoup для навигации по различным дочерним ссылкам, а некоторые из ссылок генерируются javascript, могу ли я по-прежнему перемещаться по ним? или это будет проблемой 11.06.2013
  • Если вы можете извлечь ссылки из html, вы можете их использовать. У вас есть пример (страница), которую вы имеете в виду? 11.06.2013
  • Например, перейдите на главную страницу w3schools.com, а затем используйте ссылку Learn SQL (w3schools.com/sql/default.asp) На странице Learn SQL я хочу перейти по ссылке Start изучаю SQL прямо сейчас! (w3schools.com/sql/sql_intro.asp), поэтому в целом я бы 1. ) подключитесь к URL-адресу, 2.) проанализируйте необходимую мне информацию, 3.) выберите все дополнительные ссылки, 4.) подключитесь к ним и 5.) продолжайте это, пока есть новые ссылки. 12.06.2013
  • Да, точно. То, как вы его структурируете, будет зависеть от того, что означает анализ информации, т. е. отличается ли она или одинакова на каждом уровне, является ли макет страницы действительно рекурсивным. С некоторым динамическим контентом может быть сложно работать, но эта страница выглядит просто. 12.06.2013
  • Ненавижу спрашивать, но не могли бы вы показать мне, используя мой код, как мне добавить код, который вы разместили? Я уже смог выбрать все ссылки с первой страницы, теперь я хочу выбрать все остальные ссылки. Благодарю вас! 12.06.2013
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..