flutter - 我想导入网页的一部分
问题描述
我想将学校主页的通知带到我的应用程序中。但我不知道问题是什么。我也想引入标签、链接和星期几。
这是我的noted.dart
class _HotNewsWidgetState extends State<HotNewsWidget> {
List<String> title = List();
List<String> post = List();
List<String> link = List();
void _getDataFromWeb() async {
final response =
await http.get('http://yongwon-h.gne.go.kr/yongwon-h/main.do');
dom.Document document = parser.parse(response.body);
final elements = document.getElementsByClassName('ul_list');
final element2 = document.getElementsByClassName('btn_more');
final linkElemnt = document.getElementsByClassName('ul_list');
setState(() {
title = elements
.map((element) => element.getElementsByTagName("a")[0].innerHtml)
.toList();
post = element2
.map((element) => element.getElementsByTagName("span")[0].innerHtml)
.toList();
link = linkElemnt
.map((element) =>
element.getElementsByTagName("a")[0].attributes['href'])
.toList();
});
}
这是学校主页html
<div class="notice060">
<div class="list_box on">
<ul class="ul_list">
<li><a href="/yongwon-h/na/ntt/selectNttInfo.do?nttSn=85179304&mi=73746">제8기 진해용원고등학교운영위원회 학부모위원 당선자 공고</a>
<span class="date">2021.03.19</span>
</li>
<li><a href="/yongwon-h/na/ntt/selectNttInfo.do?nttSn=85156448&mi=73746">20201학년도 대학수학능력시험 시행기본계획</a>
<span class="date">2021.03.17</span>
</li>
<li><a href="/yongwon-h/na/ntt/selectNttInfo.do?nttSn=85141070&mi=73746">제8기 학교운영위원회 교원위원 입후보자 등록현황</a>
<span class="date">2021.03.15</span>
</li>
<li><a href="/yongwon-h/na/ntt/selectNttInfo.do?nttSn=85129816&mi=73746">3월 3주 전학년 학사운영 안내</a>
<span class="date">2021.03.12</span>
</li>
<li><a href="/yongwon-h/na/ntt/selectNttInfo.do?nttSn=85117819&mi=73746">2021 찾아가는 교육정책 설명회</a>
<span class="date">2021.03.10</span>
</li>
</ul>
</div>
</div>
说明 首页图片
解决方案
import 'dart:async';
import 'package:wnetworking/wnetworking.dart';
class Yongwon {
static const _url = 'http://yongwon-h.gne.go.kr/yongwon-h/main.do';
static final _regExp1 = RegExp(r'<h2 class="tit_1">(.|\n|\r|\u2028|\u2029)*?<h2 class="tit_2">');
static final _regExp2 = RegExp(r'<li><a.+>(.+)<\/a>(.|\n|\r|\u2028|\u2029)*?(\d{4}\.\d\d\.\d\d)');
static FutureOr<void> fetchNoticies() async {
var page = await NetService.getRaw(_url).whenComplete(() => print('Page done.\n'));
if (page != null) {
final noticesPane = _regExp1.firstMatch(page)!.group(0);
if (noticesPane != null) {
final notices = _regExp2.allMatches(noticesPane);
notices.forEach((notice) => print('${notice.group(1)} ..... ${notice.group(3)}'));
}
}
}
}
void main(List<String> args) async {
await Yongwon.fetchNoticies();
print('\nJob done!');
}
结果:
Page done.
제8기 진해용원고등학교운영위원회 학부모위원 당선자 공고 ..... 2021.03.19
20201학년도 대학수학능력시험 시행기본계획 ..... 2021.03.17
제8기 학교운영위원회 교원위원 입후보자 등록현황 ..... 2021.03.15
3월 3주 전학년 학사운영 안내 ..... 2021.03.12
2021 찾아가는 교육정책 설명회 ..... 2021.03.10
Job done!
推荐阅读
- ios - 在 iOS 的 googleSign 中使用 restorePreviousSignIn()
- c# - 表单应用程序中的 HttpListener
- python - 由于 FileNotFoundError 无法启动 BrowserMod 代理:[WinError 2]
- javascript - Js if 多个值检查 if ==
- javascript - 有没有一种简单的方法可以让javascript(nodejs)执行并行函数执行(线程)
- arrays - 如何将 C char 数组中的变音符号转换为十六进制代码?
- python - 如何为传感器组合 python 脚本?
- c# - 构建后解码 JSON 命令行参数失败,但在调试期间成功
- java - 使用camel-http4消耗api休息的问题
- ruby-on-rails - Rails 6 - 在 Caprover 上部署 - 捆绑时出现“racc”gem 问题