如何从 dart 中的属性名称获取属性值(dart 中的 html 属性中的 _EVENTVALIDATION)?

Posted

技术标签:

【中文标题】如何从 dart 中的属性名称获取属性值(dart 中的 html 属性中的 _EVENTVALIDATION)?【英文标题】:How to get attribute value from attribute name in dart(_EVENTVALIDATION from html attribute in dart)? 【发布时间】:2021-06-09 09:42:36 【问题描述】:

我正在尝试从网页中抓取数据。我想获取 value 属性中存在的值(来自下面给出的 html 元素)

<input type="hidden" 
       name="__EVENTVALIDATION" 
       id="__EVENTVALIDATION" 
       value="abcdefghijklmnopq" />

我通过在flutter中对网页的get请求后解析html得到这个值

var document = parse(response.body);

然后

var event_element = document.getElementById('_EVENTVALIDATION');

我现在想要的是字符串形式的值 'abcdefghijklmnopq'。

到目前为止,我已经尝试过使用 html 包(没有用)。

在那之后我使用了 xpath(但这也没有成功),我已经连续 2 天进行头脑风暴。

我们将不胜感激任何形式的帮助 :)

这是我的代码示例

import 'package:html/parser.dart';
import 'package:http/http.dart' as http;
import 'package:html/parser.dart';
import 'package:html/dom.dart';
import 'package:html/dom_parsing.dart';



    Future<void> fetchdata() async 
  Uri url1 = Uri.parse('https://www.jhjkfw.com/login');

  http.Response response = await http.get(url1);
  var document = parse(response.body)

  var valueofevent = document.getElementById('_EVENTVALIDATION').getAttribute('value');
print(valueofevent);



也是我的 pubspec.yaml

    dependencies:
  flutter:
    sdk: flutter
  http: ^0.13.0
  html: ^0.15.0

我也尝试了以下方法,但它给了我一个错误:

var valueofevent = document.getElementById('_EVENTVALIDATION').getAttribute('value');

错误状态:没有为类型“元素”定义方法“getAttribute”。尝试将名称更正为现有方法的名称,或定义名为“getAttribute”的方法

【问题讨论】:

【参考方案1】:

你说你试过了,但没用。但不是您尝试过的什么。这应该工作。如果没有,您将需要更具体地了解究竟是什么不起作用:

var value = event_element.getAttribute('value'); 

【讨论】:

我试过这个,但它给了我:方法'getAttribute'没有为'Element'类型定义。尝试将名称更正为现有方法的名称,或定义名为“getAttribute”的方法 你能发一个minimal reproducible example吗?应该是:api.flutter.dev/flutter/dart-html/Element/getAttribute.html 我正在做这个'''var valueofevent = document.getElementById('_EVENTVALIDATION').getAttribute('value');'''(请让我知道这是否足够我会如果需要,请提供更多)。 不,这还不够,因为我不知道您使用哪些库来实现这些功能。请提供minimal reproducible example。 我用一个简单的例子编辑了我的问题,还有什么......?【参考方案2】:

我使用以下代码制作了另一种方法:

var valueofevent = document.getElementById('_EVENTVALIDATION').attributes['value'];

这非常适合我!

【讨论】:

以上是关于如何从 dart 中的属性名称获取属性值(dart 中的 html 属性中的 _EVENTVALIDATION)?的主要内容,如果未能解决你的问题,请参考以下文章

如何根据 Dart 中的 int 属性对所有 Class 属性进行排序?

Flutter Dart - 动态获取类的属性

如何使用键路径从嵌套的字典dart中获取值。

如何使用键路径从嵌套的字典dart中获取值。

从 Dart 应用访问 pubspec.yaml 属性(版本)

DART SQL 如何从 Dart 中的 SQL 查询结果中读取多行值(多列)?