2015-09-08 6 views
0

Как я могу получить строковое представление того, что отображается на вкладке при открытии веб-сайта в браузере? Скажем, если я открыл http://www.stackoverflow.com, можно извлечь «переполнение стека» String, как это показано здесь:Получить имя сайта, отображаемое на вкладке браузера?

Stack Overflow tab

Я заинтересован в Java реализация - java.net.URL не кажется, есть метод для этого.

+0

http://stackoverflow.com/questions/24237036/how-to-get-name-of-website-from-any-string-url также может быть http://stackoverflow.com/questi ons/5919476/how-to-take-title-text-from-any-web-page-in-java также может быть http://www.gotoquiz.com/web-coding/programming/java-programming/how-to -extract-titles-from-web-pages-in-java/ – user1274820

ответ

4

Меня интересует реализация Java - java.net.URL, похоже, не имеет метода для этого.

java.net.URL не будет этого делать, нет, вам нужен парсер HTML, такой как JSoup. Затем вы просто берете содержимое тега title в head.

Например, предполагая, что у вас есть URL:

Document doc = Jsoup.connect(url).get(); 
Element titleElement = doc.select("head title").first(); // Or just "title", it's always supposed to be in the head 
String title = titleElement == null ? null : titleElement.text(); 
+1

Вам не нужен «парсер HTML». Его проще использовать, но он не нужен. Это всегда разочаровывает меня, когда ответ на что-то «реализует целый набор инструментов для обработки одной простой задачи». – user1274820

+0

Хороший ответ, вы можете улучшить его с помощью примера. – MirMasej

+2

@ user1274820: You * do * нужен парсер HTML. Вы [не можете достоверно разобрать HTML без него] (http://stackoverflow.com/a/1732454/157247). Теперь он может быть очень простым, нацеленным только на извлечение этой информации или на мощный универсальный, такой как JSoup. Но вам нужен какой-то парсер. –

0

Посмотрите на следующий шаблон в réponse -

private static final Pattern TITLE_TAG = Pattern.compile("\\<title>(.*)\\</title>", Pattern.CASE_INSENSITIVE|Pattern.DOTALL); 

еще одно решение в разборе HTML с использованием регулярных выражений не считается хорошим -

javax.swing.text.html.HTMLDocument 

URL url = new URL('http://yourwebsitehere.com'); 
URLConnection connection = url.openConnection(); 
InputStream is = connection.getInputStream(); 
InputStreamReader isr = new InputStreamReader(is); 
BufferedReader br = new BufferedReader(isr); 

HTMLEditorKit htmlKit = new HTMLEditorKit(); 
HTMLDocument htmlDoc = (HTMLDocument) htmlKit.createDefaultDocument(); 
String title = (String) htmlDoc.getProperty(HTMLDocument.TitleProperty); 
System.out.println('HTMLDocument Title: ' + title); 
+1

[Не разбирайте HTML с регулярными выражениями] (http://stackoverflow.com/a/1732454/157247). Только не надо. Рассмотрите: ' Это неправильный заголовок -> Это правильное название' :-) –

+0

go it .. Добавление еще одного решения, которое я нашел в Интернете. –

Смежные вопросы