Html::select()
两者均从
Html
从
Selector
The
Html
是一个参数,所以你可以借用它(但你没有告诉编译器你这样做了——这是第一个错误),但
选择器
是一个局部变量,因此您无法返回从中借用的内容。幸运的是,有一个解决方案:
Html::select()
返回a
Select
,它只是一个迭代器
ElementRef
,从
Html
但不是从
选择器
。因此,您可以将迭代器收集到
Vec
:
fn get_item<'a>(doc: &'a scraper::Html, css_selector: String) -> Vec<ElementRef<'a>> {
let html_product_selector = scraper::Selector::parse(&css_selector).unwrap();
doc.select(&html_product_selector).collect()
}
或者,你可以省略生命周期,因为这是唯一的生命周期:
fn get_item(doc: &scraper::Html, css_selector: String) -> Vec<ElementRef<'_>> {
// ...
}
或者,如果你只想要第一场比赛:
fn get_item(doc: &scraper::Html, css_selector: String) -> Option<ElementRef<'_>> {
let html_product_selector = scraper::Selector::parse(&css_selector).unwrap();
doc.select(&html_product_selector).next()
}