Dry.
This commit is contained in:
@@ -1,8 +1,18 @@
|
||||
use lazy_static::lazy_static;
|
||||
use scraper::{Html, Selector};
|
||||
|
||||
use crate::entry::Entry;
|
||||
use crate::html::SelectExt;
|
||||
use crate::probe::Probe;
|
||||
|
||||
lazy_static! {
|
||||
static ref MESSAGE: Selector = Selector::parse(".CompanyResultListItem h3.name > a").unwrap();
|
||||
static ref HISTORY_1: Selector =
|
||||
Selector::parse("div.PhoneNoHit div.search-info-container p").unwrap();
|
||||
static ref HISTORY_2: Selector =
|
||||
Selector::parse("div.feedback-types div.feedback-type-item").unwrap();
|
||||
}
|
||||
|
||||
fn from_html(document: &str) -> Result<Entry, ()> {
|
||||
let html = Html::parse_document(document);
|
||||
|
||||
@@ -10,40 +20,23 @@ fn from_html(document: &str) -> Result<Entry, ()> {
|
||||
let mut history = Vec::new();
|
||||
let comments = Vec::new();
|
||||
|
||||
let selector = Selector::parse(".CompanyResultListItem h3.name > a").unwrap();
|
||||
|
||||
if let Some(element) = html.select(&selector).next() {
|
||||
let message = element.inner_html();
|
||||
let message = htmlescape::decode_html(&message).unwrap();
|
||||
|
||||
if let Some(message) = html
|
||||
.select(&MESSAGE)
|
||||
.next()
|
||||
.map(|element| element.easy_text())
|
||||
{
|
||||
messages.push(message);
|
||||
}
|
||||
|
||||
let selector = Selector::parse("div.PhoneNoHit div.search-info-container p").unwrap();
|
||||
|
||||
if let Some(element) = html.select(&selector).next() {
|
||||
let message = element
|
||||
.text()
|
||||
.map(str::trim)
|
||||
.filter(|s| !s.is_empty())
|
||||
.collect::<Vec<_>>()
|
||||
.join(" ");
|
||||
|
||||
let message = htmlescape::decode_html(&message).unwrap();
|
||||
|
||||
if let Some(message) = html
|
||||
.select(&HISTORY_1)
|
||||
.next()
|
||||
.map(|element| element.easy_text())
|
||||
{
|
||||
history.push(message);
|
||||
}
|
||||
|
||||
let selector = Selector::parse("div.feedback-types div.feedback-type-item").unwrap();
|
||||
|
||||
for element in html.select(&selector) {
|
||||
let message = element
|
||||
.text()
|
||||
.map(str::trim)
|
||||
.filter(|s| !s.is_empty())
|
||||
.collect::<Vec<_>>()
|
||||
.join(" ");
|
||||
|
||||
for message in html.select(&HISTORY_2).map(|element| element.easy_text()) {
|
||||
history.push(message);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user