无法从网站获取数据。使用 web_scraper 插件颤振

时间:2021-04-03 11:50:20

标签: flutter web twitter inspect web-inspector

我尝试从 Twitter 网站获取数据。我已经在互联网上进行了研究,以及如何使用 dart/flutter 从网站获取数据。所以我找到了一个名为 web_scraper 的插件,但我无法通过访问 twitter 网站来理解如何做到这一点。

这是我试过的代码

我像这样向 puspec.YAML 添加插件

dependencies:
  web_scraper: ^0.1.4

这是代码:

final rawUrl = 'https://twitter.com/FlutterDev/status/1367166395235012608';
final webScraper = WebScraper('https://twitter.com');
final endpoint = rawUrl.replaceAll(r'https://twitter.com', '');
if (await webScraper.loadWebPage(endpoint)) {
  final titleElements = webScraper.getElement(

      // todo:I can't think how to find text for here ,

      []);

  print(titleElements);
}

这是推文链接:

https://twitter.com/FlutterDev/status/1367166395235012608

这是页面检查

enter image description here

我只想要推文标题和推文正文!

1 个答案:

答案 0 :(得分:-1)

Twitter 的网页是高度​​动态的,因此很难获得其网页来源。简单的方法是获取凭据以使用其 API here。您可以使用多种可用功能。

对于你的情况,你可以使用这个:

var request = http.Request('GET', Uri.parse('https://api.twitter.com/2/tweets/1367166395235012608?tweet.fields=attachments,author_id,created_at,entities,geo,id,in_reply_to_user_id,lang,possibly_sensitive,referenced_tweets,source,text,withheld'));


http.StreamedResponse response = await request.send();

if (response.statusCode == 200) {
  print(await response.stream.bytesToString());
}
else {
  print(response.reasonPhrase);
}

你会得到这样的东西:

    {data: {attachments: {media_keys: [16_1367162250558013440]}, lang: en, entities: {hashtags: [{start: 32, end: 46, tag: 
....
, source: Twitter Web App, author_id: 420730316}}

更多详情here