【问题标题】:AS3 : How do you get specific data from HTML & split itAS3:如何从 HTML 中获取特定数据并将其拆分
【发布时间】:2014-01-09 11:45:00
【问题描述】:

我试图从网站上为我的学校项目获取“可见性”数据,我尝试过跟踪,trace(loader.data["Visibility"]); ,但它不起作用

这里是代码

var url:String = "http://www.bbc.co.uk/weather/1880252";
var reqURL:URLRequest = new URLRequest(url);
var loader:URLLoader = new URLLoader(reqURL);


loader.addEventListener(Event.COMPLETE, handleComplete);
loader.dataFormat = URLLoaderDataFormat.TEXT;

function handleComplete(event:Event):void
{
var loader:URLLoader = URLLoader(event.target);
trace(loader.data);
}

【问题讨论】:

    标签: actionscript-3 loader


    【解决方案1】:

    在 AS3(不是 AIR)中没有用于解析原始 html 的通用方法或任何内置函数。 在您的情况下,最简单的方法是使用RegExp

    public function astest()
    {
        var url:String = "http://www.bbc.co.uk/weather/1880252";
        var reqURL:URLRequest = new URLRequest(url);
        var loader:URLLoader = new URLLoader(reqURL);
    
    
        loader.addEventListener(Event.COMPLETE, handleComplete);
        loader.dataFormat = URLLoaderDataFormat.TEXT;
    
        function handleComplete(event:Event):void
        {
            var loader:URLLoader = URLLoader(event.target);
    
            var rawhtml:String = loader.data;
    
            // <tr class="visibility">
            var tag:String = rawGetTagByAttrValue(rawhtml, "visibility", "tr", "class");
            trace(tag);
        }
    }
    
    public static function rawGetTagByAttrValue(html:String, attrValue:String, tag:String = "",  attrName:String = ""):String
    {
        var pattern:RegExp = tag == "" ? 
                new RegExp("<(\\w+)[^>]+?"+attrName+"=\""+attrValue+"\".*?(/>|</\\1>)","is") :
                new RegExp("<"+tag+"[^>]+?"+attrName+"=\""+attrValue+"\".*?(/>|</"+tag+">)","is");
    
        var result:Array = html.match(pattern);  
    
        if (result != null && result.length > 0)
            return result[0];
    
        return "";
    }
    

    输出:

    <tr class="visibility">
            <th class="row-title">Visibility (E = Excellent, VG = Very Good, G = Good, M = Moderate, P = Poor, VP = Very Poor)</th>
                            <td class="value hours-3"
                    ><abbr title="Good">G</abbr
                    ></td>
                            <td class="value hours-3"
                    ><abbr title="Good">G</abbr
                    ></td>
                            <td class="value hours-3"
                    ><abbr title="Good">G</abbr
                    ></td>
                            <td class="value hours-3"
                    ><abbr title="Good">G</abbr
                    ></td>
                        <td class="hours-3 empty">&nbsp;</td><td class="hours-3 empty">&nbsp;</td><td class="hours-3 empty">&nbsp;</td><td class="hours-3 empty">&nbsp;</td>        </tr>
    

    【讨论】:

    • 嗯嗯,非常感谢,会更多地研究正则表达式
    猜你喜欢
    • 1970-01-01
    • 2011-04-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-14
    • 2012-06-15
    • 2016-03-08
    相关资源
    最近更新 更多