parse.rs 684 B

1234567891011121314151617181920212223
  1. use anyhow::{Result};
  2. use scraper;
  3. use std::string::String;
  4. /// Extract element text, trimmed of whitespace.
  5. fn element_text(element: scraper::ElementRef<'_>) -> String {
  6. let text = element
  7. .text()
  8. .map(|s| s.trim_matches(char::is_whitespace))
  9. .filter(|x| !x.is_empty())
  10. .collect::<String>();
  11. text
  12. }
  13. pub fn find_useragents(html: &str) -> Result<Vec<String>> {
  14. let mut result = Vec::<String>::new();
  15. let document = scraper::Html::parse_document(&html);
  16. let select = scraper::Selector::parse(r#"li > span[class="code"]"#).unwrap();
  17. for s in document.select(&select) {
  18. result.push(element_text(s))
  19. }
  20. Ok(result)
  21. }