首页 > 解决方案 > 用 python 爬网到飞镖;re, bs4 to http & parser library in dart

问题描述

我想问一下我的 Dart 语法是否正确。我正在尝试在网站上抓取三个数字,这就是我在 parse.html 时得到的

<!-- corona  virus number--> <div class="co_cur"> 
<p class="tit">corona virus number<a href="/bdBoardList.do"> </a></p> 
<ul> <li><span class="tit">Corona number</span><a class="num" href="/bdBoardList.do">5,328</a></li> 
<li><span class="tit">Recovered number</span><a class="num" href="/bdBoardList.do">41</a></li>
<li><span class="tit">Death number</span><a class="num" href="/bdBoardList.do">32</a></li> </ul> 

这是我的python代码

html = requests.get("http://ncov.mohw.go.kr/index_main.jsp")
soup = BeautifulSoup(html.text, "html.parser") 
data = soup.select("div.co_cur > ul > li > a.num") ##go to here
regex = re.compile(r"\d[,\d]+") ##reg
cc = regex.search(data[0].text).group() #5328
recovered = regex.search(data[1].text).group() #41
dead = regex.search(data[2].text).group() #32

这是我的飞镖代码。由于我是 dart 新手,所以我关注了 thisblogdartdocument,但不确定这是否正确。特别是如果元素和组语法的使用是正确的。

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

Future initiate(BaseClient client) async { 
    // Make API call to site 
    Response response = await client.get('http://ncov.mohw.go.kr/index_main.jsp'); 

    if (response.statusCode != 200) return response.body; 

    // Use html parser 
    var document = parse(response.body); 
    List<dom.Element> num = document.querySelectorAll("div.co_cur > ul > li > a.num"); 
    //do i use dom.Element or just Element?

    regex = RegExp(r"\d[,\d]+");
    match = regexp.allMatches(num);
    ncorona = match.group(0);  //is this syntax is correct?
    nrecovered = match.group(1);
    ndeath = match.group(2);

    return ncorona, nrecovered, ndeath

标签: htmljsonparsingdart

解决方案


推荐阅读