我已经设法解决了大约两天,但我终生无法解决,所以我会尽力在这里提出我的问题:
所以基本上,我要做的是使用querySelector从网站收集信息(例如:document.querySelectorAll('td.title> a');“,然后将该信息放入“文本”小部件中。如何我要去做吗?
答案 0 :(得分:0)
Flutter中的Scraping与Dart相比并没有什么特别的。 请记住,用100%Dart编写的所有内容都可以在Flutter中使用。
您可以按照本指南进行操作,并说明使用Dart进行刮擦的基本知识 https://itnext.io/write-your-first-web-scraper-in-dart-243c7bb4d05
基本步骤是:
1)发出http请求并将其存储在变量中
2)使用解析器解析响应主体(从html / parser lib导入) 现在,您的整个响应都为html,这意味着您可以访问节点,元素和操作内容
3)使用document.querySelector选择所需的元素。请注意,它需要使用css选择器参数,另外请注意,您的css选择器正好指向您想要的位置。
4)现在,如果您知道querySelector类型,则可以声明或仅使用var。 (声明它为静态是更好的选择,它将提供访问dom操纵属性和方法)
import 'dart:async';
import 'package:http/http.dart' as http;
import 'package:html/parser.dart';
void getIMDBReview()async{
final response = await http.get(
'https://m.imdb.com/title/$imdbId/reviews?ref_=m_tt_urv');
if (response.statusCode == 200) {
// print(response.body);
var document = parse(response.body);
var reviewContent = document.querySelectorAll(
'#reviews-container > .ipl-content-list__item > .imdb-user-review >.review-container >.content>.text');
for(var review in reviewContent){
print(review.text);
}
}
}
用id代替imdbId,希望它会返回所有评论