2015-10-08 6 views
-5

Хорошо, поэтому я пишу программу Java, которая требует от меня поиска в Интернете и отображения данных. Как и каждый умный человек, лучшим местом для поиска информации является Wikipedia.Получите краткое содержание из Википедии по программе Java

Я просмотрел и нашел MediaWiki, но я понятия не имею, с чего начать. Я объясню, что мне нужно, и вся помощь приветствуется!

Пример: Ввод пользователя: Кто такой Эд Ширан?
(оставить извлекающую часть для меня, я знаю, как это сделать)

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

Итак, после того, как программа выполнена, это будет мой вывод:

Ввод пользователя: Кто такой Эд Ширан?
Результат: Эдвард Кристофер «Эд» Ширан (родился 17 февраля 1991 года) - английский певец-песенник и случайный актер.

Ввод пользователя: Где находится Бангалор?
Выход: Бангалор/bæŋɡəlɔːr /, официально известный как Бенгалуру ([beŋɡəɭuːɾu]), является столицей индийского штата Карнатака.

Вся помощь будет оценена по достоинству. Благодаря!

+2

Вы проверили веб-интерфейс wikimedia [API] (https://www.mediawiki.org/wiki/API:Main_page)?Вероятно, получить данные из своего API, а затем проанализировать текст из результатов вашего запроса. – mhfff32

+0

Хорошо, я новичок в этом и абсолютно НЕ КЛИЕНТ, что с того, с чего начать. Может ли кто-нибудь написать ответ для человека, который хочет начать с нуля? –

+0

Это слишком широко. В этом формате это невозможно ответить. Пожалуйста, разделите это на дискретные фрагменты - проектирование пользовательского интерфейса, анализ/очистку ввода пользователя, внесение запросов в Википедию, потребление и форматирование полученных данных, вывод данных и т. Д. И начало каждого бит. Вернитесь, когда у вас есть конкретный вопрос. Кажется, что все, что вы сделали до сих пор, - это определить требования, а затем просто дать их нам. – tnw

ответ

0

Это работает для меня с этим запросом:

import java.io.BufferedReader; 
import java.io.InputStreamReader; 
import java.net.URL; 

. , ,

String subject = "Ed Sheeran"; 
URL url = new URL("https://en.wikipedia.org/w/index.php?action=raw&title=" + subject.replace(" ", "_")); 
String text = ""; 
try (BufferedReader br = new BufferedReader(new InputStreamReader(url.openConnection().getInputStream()))) { 
    String line = null; 
    while (null != (line = br.readLine())) { 
     line = line.trim(); 
     if (!line.startsWith("|") 
       && !line.startsWith("{") 
       && !line.startsWith("}") 
       && !line.startsWith("<center>") 
       && !line.startsWith("---")) { 
      text += line; 
     } 
     if (text.length() > 200) { 
      break; 
     } 
    } 
} 
System.out.println("text = " + text); 

печатает:

текст = '' 'Эдвард Christopher' '' " '' 'Ed' ''" '' 'Ширан' '' (родился 17 февраля 1991 года) является английский певица-поэт - песенник и случайный актер. Родился в [[Hebden Bridge]], Западный Йоркшир и вырос в [[Framlingham]],

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

Update

Вот альтернатива, которая разбирает JSON с библиотекой здесь:
http://search.maven.org/#artifactdetails|org.json|json|20150729|jar

import java.io.BufferedReader; 
import java.io.IOException; 
import java.io.InputStreamReader; 
import java.net.URL; 
import org.json.JSONObject; 

...

String subject = "Ed Sheeran"; 
URL url = new URL("https://en.wikipedia.org/w/api.php?action=query&prop=extracts&format=json&exsentences=1&exintro=&explaintext=&exsectionformat=plain&titles=" + subject.replace(" ", "%20")); 
String text = ""; 
try (BufferedReader br = new BufferedReader(new InputStreamReader(url.openConnection().getInputStream()))) { 
    String line = null; 
    while (null != (line = br.readLine())) { 
     line = line.trim(); 
     if (true) { 
      text += line; 
     } 
    } 
} 

System.out.println("text = " + text); 
JSONObject json = new JSONObject(text); 
JSONObject query = json.getJSONObject("query"); 
JSONObject pages = query.getJSONObject("pages"); 
for(String key: pages.keySet()) { 
    System.out.println("key = " + key); 
    JSONObject page = pages.getJSONObject(key); 
    String extract = page.getString("extract"); 
    System.out.println("extract = " + extract); 
} 

Выход:

экстракт = Эдвард Кристофер «Эд» Ширан (родился 17 февраля 1991 года) - английский певец-поэт - песенник и случайный актер.

+0

Какие пакеты вы импортируете для этой программы? –

+0

Это работает. Но я думал об использовании mediaWiki: https://en.wikipedia.org/w/api.php?action=query&prop=extracts&format=json&exsentences=1&exintro=&explaintext=&exsectionformat=plain&titles=Ed%20Sheeran –

+0

Добавил импорт. – WillShackleford