Class: Html2rss::AutoSource::Discovery::DomClustering
- Inherits:
-
Object
- Object
- Html2rss::AutoSource::Discovery::DomClustering
- Defined in:
- lib/html2rss/auto_source/discovery/dom_clustering.rb,
lib/html2rss/auto_source/discovery/dom_clustering/group_scorer.rb,
lib/html2rss/auto_source/discovery/dom_clustering/overlap_resolver.rb
Overview
Discovers repeated content card nodes in anchorless or classless DOM trees by evaluating class groups first and falling back to 1-level tag structure signatures.
Defined Under Namespace
Classes: GroupScorer, OverlapResolver
Constant Summary collapse
- LAYOUT_TAG_NAMES =
Node tags considered layout containers
Set['div', 'section', 'article', 'li', 'ul', 'ol'].freeze
- EXCLUDED_TAGS =
HTML/layout tags excluded from candidate nodes (owned by Html::Navigator).
Html2rss::Html::Navigator::CLUSTER_EXCLUDED_TAGS
Class Method Summary collapse
-
.call(parsed_body, minimum_selector_frequency:) ⇒ Array<Nokogiri::XML::Node>
Clusters elements in parsed_body and returns the best set of content card nodes.
Instance Method Summary collapse
- #call ⇒ Array<Nokogiri::XML::Node>
-
#initialize(parsed_body, minimum_frequency:) ⇒ DomClustering
constructor
A new instance of DomClustering.
Constructor Details
#initialize(parsed_body, minimum_frequency:) ⇒ DomClustering
Returns a new instance of DomClustering.
29 30 31 32 33 |
# File 'lib/html2rss/auto_source/discovery/dom_clustering.rb', line 29 def initialize(parsed_body, minimum_frequency:) @parsed_body = parsed_body @minimum_frequency = minimum_frequency @cache = {}.compare_by_identity end |
Class Method Details
.call(parsed_body, minimum_selector_frequency:) ⇒ Array<Nokogiri::XML::Node>
Clusters elements in parsed_body and returns the best set of content card nodes.
22 23 24 |
# File 'lib/html2rss/auto_source/discovery/dom_clustering.rb', line 22 def call(parsed_body, minimum_selector_frequency:) new(parsed_body, minimum_frequency: minimum_selector_frequency).call end |
Instance Method Details
#call ⇒ Array<Nokogiri::XML::Node>
36 37 38 39 40 41 |
# File 'lib/html2rss/auto_source/discovery/dom_clustering.rb', line 36 def call class_result = cluster_by_class return class_result unless class_result.empty? cluster_by_structure end |