Идея: Открыть URL-адрес в виде потока, а затем выполнить HTML-анализ строки в ее метатеге описания.
Получить содержимое URL-адреса:
URL url = new URL("http://www.url-to-be-parsed.com/page.html");
BufferedReader in = new BufferedReader(
new InputStreamReader(
url.openStream()));
Потребуется настроить вышеуказанный код в зависимости от того, что требуется вашей библиотеке HTML-анализатора (поток, строки и т. Д.).
HTML-анализ тегов:
<meta name="description" content="This is a place where webmasters can put a description about this web page" />
Вам также может быть интересно получить заголовок этой страницы:
<title>This is the title of the page!</title>
Внимание: Регулярные выражения не работают надежно в документах HTML, поэтому HTML-парсер лучше.
Пример с HTML-парсером:
- Используйте
HasAttributeFilter
для фильтрации по тегам, имеющим name="description"
атрибут - попробовать
Node
---> MetaTag
приведение - Получить
content
используя MetaTag.getAttribute()
код:
import org.htmlparser.Node;
import org.htmlparser.Parser;
import org.htmlparser.util.NodeList;
import org.htmlparser.util.ParserException;
import org.htmlparser.filters.HasAttributeFilter;
import org.htmlparser.tags.MetaTag;
public class HTMLParserTest {
public static void main(String... args) {
Parser parser = new Parser();
//<meta name="description" content="Some texte about the site." />
HasAttributeFilter filter = new HasAttributeFilter("name", "description");
try {
parser.setResource("http://www.youtube.com");
NodeList list = parser.parse(filter);
Node node = list.elementAt(0);
if (node instanceof MetaTag) {
MetaTag meta = (MetaTag) node;
String description = meta.getAttribute("content");
System.out.println(description);
// Prints: "YouTube is a place to discover, watch, upload and share videos."
}
} catch (ParserException e) {
e.printStackTrace();
}
}
}
Замечания:
Если это делается в JSP при каждой загрузке страницы, вы можете получить замедление из-за сетиВвод / вывод по URL.Еще хуже, если вы делаете это каждый раз на лету для своей страницы, на которой есть много URL-ссылок, тогда замедление может быть огромным из-за последовательной работы n URL.Возможно, вы можете хранить эту информацию в базе данных и обновлять ее по мере необходимости, вместо того, чтобы делать это на лету в JSP.