Jsoup –从HTML页面获取Favicon

favicons_collection1

Web浏览器可以识别网站图标的方式有很多:

例子1

<head>
	<link rel="icon" href="http://example.com/image.ico" />
  </head>

例子2

<head>
	<link rel="icon" href="http://example.com/image.png" />
  </head>

示例3 –很奇怪,但是Google使用它。

<head>
	<meta content="/images/google_favicon_128.png" itemprop="image" />
  </head>

1. Jsoup示例

使用Jsoup编写代码片段以超越Favicon。

Element element = doc.head().select("link[href~=.*\\.(ico|png)]").first();
	System.out.println(element.attr("href"));
Element element = doc.head().select("meta[itemprop=image]").first();
	System.out.println(element.attr("content"));

2.单元测试

单元测试示例。

package com.webmitta.analysis;

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.testng.Assert;
import org.testng.annotations.Test;

@Test
public class TestFavIcon {

  Document document;

  private String PageProvider1() {

	StringBuffer html = new StringBuffer();

	html.append("<!DOCTYPE html>");
	html.append("<html lang=\"en\">");
	html.append("<head>");
	html.append("<link rel=\"icon\" href=\"http://example.com/image.ico\" />");
	html.append("</head>");
	html.append("<body>");
	html.append("something");
	html.append("</body>");
	html.append("</html>");

	return html.toString();

  }

  private String PageProvider2() {

	StringBuffer html = new StringBuffer();

	html.append("<!DOCTYPE html>");
	html.append("<html lang=\"en\">");
	html.append("<head>");
	html.append("<meta content=\"/images/google_favicon_128.png\" itemprop=\"image\">");
	html.append("</head>");
	html.append("<body>");
	html.append("something");
	html.append("</body>");
	html.append("</html>");

	return html.toString();
  }

  @Test
  void test_FavIcon1() {

	Document doc = Jsoup.parse(PageProvider1());

	Element element = doc.head().select("link[href~=.*\\.(ico|png)]").first();
	Assert.assertEquals(element.attr("href"),
		"http://example.com/image.ico");

  }

  @Test
  void test_FavIcon2() {

	Document doc = Jsoup.parse(PageProvider2());

	Element element = doc.head().select("meta[itemprop=image]").first();
	Assert.assertEquals(element.attr("content"),
		"/images/google_favicon_128.png");

  }

}

输出量

[TestNG] Running:
  C:\Users\mkyong2002\AppData\Local\Temp\testng-eclipse--1846902117\testng-customsuite.xml

PASSED: test_FavIcon1
PASSED: test_FavIcon2

参考文献

  1. 维基百科:Favicon
  2. Jsoup HTML解析器Hello World示例

翻译自: https://mkyong.com/java/jsoup-get-favicon-from-html-page/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值