17个版本
0.8.0 | 2020年11月7日 |
---|---|
0.7.5 | 2019年12月25日 |
0.7.4 | 2019年10月1日 |
0.6.0 | 2019年2月12日 |
0.3.0 | 2018年12月12日 |
#2387 在 解析器实现
在 5 crates 中使用
19KB
507 代码行
unhtml
在crate unhtml
中有两个 trait
FromHtml
FromHtml
唯一需要关注的方法是 fn from_html(html: &str) -> Result<Self, Error>
,此方法为所有实现了 FromStr<E, T>
的类型实现
impl<E, T> FromHtml for T
where E: failure::Fail,
T: FromStr<Err=E> {
fn from_html(html: &str) -> Result<Self, Error> {
Ok(T::from_str(html.trim())?)
}
}
您可以使用crate unhtml_derive
自动为 struct
实现 FromHtml
VecFromHtml
VecFromHtml
默认为 Vec<T> where T: FromHtml
实现
impl<T> VecFromHtml for Vec<T>
where T: FromHtml {
type Elem = T;
}
因为默认情况下,u8
已实现 FromHtml
use unhtml::scraper::Html;
use unhtml::VecFromHtml;
let html = Html::parse_fragment(r#"
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<div id="test">
<a href="1"></a>
<a href="2"></a>
<a href="3"></a>
</div>
</body>
</html>
"#);
let results = Vec::<u8>::from_attr("#test > a", "href", html.root_element()).unwrap();
assert_eq!(1u8, results[0]);
assert_eq!(2u8, results[1]);
assert_eq!(3u8, results[2]);
依赖项
~3–9MB
~79K SLoC