加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

在swift中解析html的最佳做法是什么?

发布时间:2020-12-14 05:53:20 所属栏目:百科 来源:网络整理
导读:我是一个Swift新手我需要像Swift iOS项目中的Python的BeautifulSoup这样的东西。确切地说,我需要得到 a以“.txt”结尾。我应该采取什么步骤? 有几个很好的HTML解析库,使用Swift和Objective-C,如下所示: hpple NDHpple Kanna( old Swift-HTML-Parser) Fu
我是一个Swift新手我需要像Swift iOS项目中的Python的BeautifulSoup这样的东西。确切地说,我需要得到< a>以“.txt”结尾。我应该采取什么步骤?
有几个很好的HTML解析库,使用Swift和Objective-C,如下所示:

> hpple
> NDHpple
> Kanna( old Swift-HTML-Parser)
> Fuzi

看看下面的例子,在上面发布的四个图书馆里,主要使用XPath 2.0进行解析:

hpple:

let data = NSData(contentsOfFile: path)
let doc = TFHpple(HTMLData: data)

if let elements = doc.searchWithXPathQuery("//a/@href[ends-with(.,'.txt')]") as? [TFHppleElement] {
   for element in elements {
       println(element.content)
   }
}

NDHpple:

let data = NSData(contentsOfFile: path)!
let html = NSString(data: data,encoding: NSUTF8StringEncoding)!
let doc = NDHpple(HTMLData: html)
if let elements = doc.searchWithXPathQuery("//a/@href[ends-with(.,'.txt')]") {
   for element in elements {
     println(element.children?.first?.content)
   }
}

Kanna (Xpath and CSS Selectors):

let html = "<html><head></head><body><ul><li><input type='image' name='input1' value='string1value' class='abc' /></li><li><input type='image' name='input2' value='string2value' class='def' /></li></ul><span class='spantext'><b>Hello World 1</b></span><span class='spantext'><b>Hello World 2</b></span><a href='example.com'>example(English)</a><a href='example.co.jp'>example(JP)</a></body>"

if let doc = Kanna.HTML(html: html,encoding: NSUTF8StringEncoding) {
   var bodyNode   = doc.body

   if let inputNodes = bodyNode?.xpath("//a/@href[ends-with(.,'.txt')]") {
      for node in inputNodes {
         println(node.contents)
      }
   }
}

Fuzi (Xpath and CSS Selectors):

let html = "<html><head></head><body><ul><li><input type='image' name='input1' value='string1value' class='abc' /></li><li><input type='image' name='input2' value='string2value' class='def' /></li></ul><span class='spantext'><b>Hello World 1</b></span><span class='spantext'><b>Hello World 2</b></span><a href='example.com'>example(English)</a><a href='example.co.jp'>example(JP)</a></body>"

do {
  // if encoding is omitted,it defaults to NSUTF8StringEncoding
  let doc = try HTMLDocument(string: html,encoding: NSUTF8StringEncoding)

  // XPath queries
  for anchor in doc.xpath("//a/@href[ends-with(.,'.txt')]") {
    print(anchor.stringValue)
  }

} catch let error {
    print(error)
}

结束功能是Xpath 2.0的一部分。

我希望这能帮助你。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读