Webpage.rs
Get some info about a webpage
Usage
extern crate webpage;
use webpage::Webpage;
info = Webpage::from_url("http://www.rust-lang.org/en-US/");
let http = info.http.unwrap();
assert_eq!(http.ip, "54.192.129.71".to_string());
assert!(http.headers[0].starts_with("HTTP"));
assert!(http.body.starts_with("<!DOCTYPE html>"));
assert_eq!(http.url, "https://www.rust-lang.org/en-US/".to_string()); assert_eq!(http.content_type, "text/html".to_string());
let html = info.html.unwrap();
assert_eq!(html.title.unwrap(), "The Rust Programming Language".to_string());
assert_eq!(html.description.unwrap(), "A systems programming language that runs blazingly fast, prevents segfaults, and guarantees thread safety.".to_string());
assert_eq!(html.opengraph.og_type, "website".to_string());
All fields
pub struct Webpage {
pub http: Option<HTTP>, pub html: Option<HTML>, }
pub struct HTTP {
pub ip: String,
pub transfer_time: Duration,
pub redirect_count: u32,
pub content_type: String,
pub response_code: u32,
pub headers: Vec<String>, pub url: String, pub body: String,
}
pub struct HTML {
pub title: Option<String>,
pub description: Option<String>,
pub url: Option<String>, pub feed: Option<String>,
pub language: Option<String>, pub text_content: String,
pub meta: HashMap<String, String>,
pub opengraph: Opengraph,
pub schema_org: Vec<SchemaOrg>,
}
pub struct Opengraph {
pub og_type: String,
pub properties: HashMap<String, String>,
pub images: Vec<Object>,
pub videos: Vec<Object>,
pub audios: Vec<Object>,
}
pub struct OpengraphObject {
pub url: String,
pub properties: HashMap<String, String>,
}
pub struct SchemaOrg {
pub schema_type: String,
pub value: serde_json::Value,
}