diff --git a/src/lib.rs b/src/lib.rs index a331c25..ce3f991 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -392,7 +392,14 @@ impl ArticleScraper { fn strip_id_or_class(context: &Context, id_or_class: &String) -> Result<(), ScraperError> { let xpath = &format!("//*[contains(@class, '{}') or contains(@id, '{}')]", id_or_class, id_or_class); - let node_vec = Self::evaluate_xpath(context, xpath, false)?; + + let mut ancestor = xpath.clone(); + if ancestor.starts_with("//") { + ancestor = ancestor.chars().skip(2).collect(); + } + + let query = &format!("{}[not(ancestor::{})]", xpath, ancestor); + let node_vec = Self::evaluate_xpath(context, query, false)?; for mut node in node_vec { node.unlink(); }