使用 Kanna 解析 HTML

Parse HTML using Kanna

提问人:matteo94 提问时间:3/11/2018 最后编辑:Enrique Bermúdezmatteo94 更新时间:3/11/2018 访问量:467

问:

我在尝试使用 Kanna 提取图像 URL 时遇到问题。我试图从这里获取“高质量数据”:

<div class="cui-content c-bdr-gray-clr ch-bdr-gray-md ">

  <div class="cui-udc-image-container">
    <div class="cui-udc-image-overlay"></div>
        <div class="cui-image-lazy-container cui-image-hover-zoom">
    <img class="cui-svg-placeholder c-bg-gray-bg" type="image/svg+xml" height="250"  width="414" src="data:image/svg+xml;charset=utf-8,%3Csvg xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg' height='250' width='414'%2F%3E" alt="image placeholder">

    <img class="cui-image  lazy-wl    progressive-load  "
    src="data:image/svg+xml;charset=utf-8,%3Csvg xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg' height='250' width='414'%2F%3E"
    data-original="//img.grouponcdn.com/deal/2LXY5HUANHJq7xXm3P5gNFJYBRB5/2L-1100x660/v1/c125x75q5.jpg"
    data-high-quality="//img.grouponcdn.com/deal/2LXY5HUANHJq7xXm3P5gNFJYBRB5/2L-1100x660/v1/c414x250q85.jpg"
    data-high-quality-2x="//img.grouponcdn.com/deal/2LXY5HUANHJq7xXm3P5gNFJYBRB5/2L-1100x660/v1/c414x250q85.jpg"
    alt="image for Up to 36% Off Las Vegas Margarita Mojito Festival">
  </div>

我只能从第一个“img”元素中获取信息,但我需要的信息包含在第二个元素中。我的代码如下所示:

func parseHtml(html: String) {
    var tempArray = [String]()

    if let doc = Kanna.HTML(html:html, encoding: String.Encoding.utf8) {

        for name in doc.css("div[class^='cui-image-lazy-container cui-image-hover-zoom']"){
            let imageUrl = (name.at_xpath("img")?["data-high-quality"])
            tempArray.append(imageUrl!)
        }
    }

任何建议将不胜感激!

iOS Swift XML HTML 解析

评论


答:

1赞 matteo94 3/11/2018 #1

我想出了该怎么做。我应该通过它的类来获取实际的“img”节点,然后单独选择我正在寻找的 HTML 标签的哪一部分,如下所示:

for name in doc.css("img[class='cui-image  lazy-wl    progressive-load  ']"){

            tempArray.append(name["data-high-quality"]!)
        }

希望这能帮助任何遇到同样问题的人。