リンク抽出
独立したリンク抽出 API で、HTML からすべてのリンクリソースを抽出し、タイプ別にグループ化できます。
Extract との主な違い
ExtractAllLinks は HTML サニタイズを適用しません(ここでは EnableSanitization は無効です)。そのため <script src>、<iframe>、<link>、<embed> などのタグ内のリソースリンクもすべて抽出されます。これはこれらのリソースリンクを列挙できるようにするためであり、Extract の経路では通常サニタイズで除去されます。
結果の並べ替えと重複排除
ExtractAllLinks の結果は URL の昇順でソートされ、URL で重複排除されます。そのため同じ入力に対して複数回呼び出しても完全に同一の出力が得られます (v1.4.2 以降)。結果の比較、キャッシュ再利用、再現可能な下流処理に役立ちます。同じ URL が複数のタグに現れる場合は 1 件だけ保持されます。
パッケージ関数
go
func ExtractAllLinks(htmlBytes []byte, cfg ...Config) ([]LinkResource, error)
func ExtractAllLinksFromFile(filePath string, cfg ...Config) ([]LinkResource, error)
func ExtractAllLinksWithContext(ctx context.Context, htmlBytes []byte, cfg ...Config) ([]LinkResource, error)
func ExtractAllLinksFromFileWithContext(ctx context.Context, filePath string, cfg ...Config) ([]LinkResource, error)Processor メソッド
go
func (p *Processor) ExtractAllLinks(htmlBytes []byte) ([]LinkResource, error)
func (p *Processor) ExtractAllLinksFromFile(filePath string) ([]LinkResource, error)
func (p *Processor) ExtractAllLinksWithContext(ctx context.Context, htmlBytes []byte) ([]LinkResource, error)
func (p *Processor) ExtractAllLinksFromFileWithContext(ctx context.Context, filePath string) ([]LinkResource, error)グループ化ツール
GroupLinksByType
リンクをタイプ別にグループ化します。
go
func GroupLinksByType(links []LinkResource) map[string][]LinkResourcego
links, _ := html.ExtractAllLinks(data)
groups := html.GroupLinksByType(links)
for typ, items := range groups {
fmt.Printf("タイプ %s: %d 件\n", typ, len(items))
}LinkResource
go
type LinkResource struct {
URL string // リンクアドレス
Title string // リンクタイトル
Type string // リンクタイプ(link, image, video, audio, media, css, js, icon)
}設定
リンク抽出の動作は Config のリンクフィルタフィールドで制御できます:
go
cfg := html.DefaultConfig()
cfg.IncludeImages = true
cfg.IncludeCSS = true
cfg.IncludeJS = true
cfg.IncludeExternalLinks = true
cfg.ResolveRelativeURLs = true
cfg.BaseURL = "https://example.com"ヒント
ResolveRelativeURLs=true かつ BaseURL が空の場合、ライブラリは HTML 文書自身から BaseURL を自動的に推論します。以下の優先順位で順に試し、一致したものがあればその時点で返します:
<base href>タグ;<meta property="og:url">または<meta property="canonical">のcontent;<link rel="canonical" href>;- 文書中に最初に出現する絶対 URL(
href/srcから base を抽出)。
BaseURL を明示的に設定すると自動検出をスキップし、呼び出し元が指定した値を優先します。