Добрый день! Для реализации программы, которая сохраняет 50 случайных статей из Википедии в разные файлы на языке Java, можно использовать библиотеку Jsoup для извлечения данных с веб-страниц и стандартные средства для работы с файлами. Вот пример такой программы:
Добавьте библиотеку Jsoup в ваш проект. Если вы используете Maven, добавьте следующие зависимости в ваш pom.xml файл:
org.jsoup
jsoup
1.13.1
Напишите код для извлечения случайных статей из Википедии и сохранения их в файлы:
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Random;
public class WikipediaRandomArticles {
private static final String RANDOM_WIKIPEDIA_URL = "https://en.wikipedia.org/wiki/Special:Random";
private static final int NUMBER_OF_ARTICLES = 50;
private static final String OUTPUT_DIRECTORY = "wiki_articles/";
public static void main(String[] args) {
try {
File directory = new File(OUTPUT_DIRECTORY);
if (!directory.exists()) {
directory.mkdir();
}
for (int i = 1; i <= NUMBER_OF_ARTICLES; i++) {
try {
Document doc = Jsoup.connect(RANDOM_WIKIPEDIA_URL).get();
String title = doc.title();
String content = doc.body().text();
saveArticleToFile(i, title, content);
System.out.println("Saved article " + i + ": " + title);
} catch (IOException e) {
System.err.println("Error fetching article " + i + ": " + e.getMessage());
}
// Wait for a short period to avoid being blocked by Wikipedia
Thread.sleep(new Random().nextInt(2000) + 1000);
}
} catch (InterruptedException e) {
e.printStackTrace();
}
}
private static void saveArticleToFile(int index, String title, String content) {
String filename = OUTPUT_DIRECTORY + "article_" + index + ".txt";
try (FileWriter writer = new FileWriter(filename)) {
writer.write("Title: " + title + "\n\n");
writer.write(content);
} catch (IOException e) {
System.err.println("Error writing article " + index + ": " + e.getMessage());
}
}
}
Запустите программу, и она начнет извлекать 50 случайных статей из Википедии и сохранять их в отдельные файлы в указанной директории.
Объяснение кода:
- Используется библиотека Jsoup для подключения и извлечения данных из случайных страниц Википедии.
- В цикле for происходит извлечение и сохранение 50 статей.
- Заголовок и содержимое каждой статьи извлекаются и сохраняются в текстовый файл с именем article_<номер>.txt.
Между запросами к Википедии устанавливается случайная задержка, чтобы избежать блокировки со стороны сервера.