Swiftsoup解析未找到所有HTML类

问题描述 投票:1回答:1

我有一种使用Swiftsoup来解析网站的方法,以获取产品的价格:

@objc func actionButtonTapped(){

    let url = "https://www.overkillshop.com/de/c2h4-interstellar-liaison-panelled-zip-up-windbreaker-r001-b012-vanward-black-grey.html"

    let url2 = "https://www.asos.com/de/asos-design/asos-design-schwarzer-backpack-mit-ringdetail-und-kroko-muster/prd/14253083?clr=schwarz&colourWayId=16603012&SearchQuery=&cid=4877"



    do {


        let html: String = getHTMLfromURL(url: url2)
        let doc: Document = try SwiftSoup.parse(html)

        let priceClasses: Elements = try doc.select("[class~=(?i)price]")

        for priceClass: Element in priceClasses.array() {
            let priceText : String = try priceClass.text()
            print(try priceClass.className())
            print("pricetext: \(priceText)")
        }

    } catch Exception.Error(let type, let message) {
        print(message)
    } catch {
        print("error")
    }
}

该方法对于url效果很好,但对于url2,即使它们与classNames匹配,也无法打印所有regex。价格实际上是在这里:

<span data-id="current-price" data-bind="text: priceText(), css: {'product-price-discounted' : isDiscountedPrice }, markAndMeasure: 'pdp:price_displayed'" class="current-price">36,99 €</span>

该函数的输出是这个:

产品价格价格文字:

股票价格重试-oos

pricetext:股票价格重试

pricetext:

不打印class=current-price。我的regex出问题了,还是为什么找不到class ??

EDIT:] >>

我发现price实际上不在HTMLurl2内部。仅实际打印出的classes位于内部。这是什么原因,我该如何解决?

我有一种使用Swiftsoup解析网站的方法,可以获取产品价格:@objc func actionButtonTapped(){let url =“ https://www.overkillshop.com/de/c2h4-interstellar-liaison-。 ..

html ios swift css-selectors swiftsoup
1个回答
0
投票

HTML不是静态的。它会随着时间而变化。如果您对网站的URL提出获取请求,您将获得该网站的html的初始值。但是在浏览器上有一个叫做javascript的东西,可以使页面的HTML随时间变化。实际上这很普遍:-网站首先会加载一些JavaScript-javascript(由网站的创建者开发)比运行并能完成的工作-通过该javascript调用一些API,内容可以动态更改]

您无法通过HTML抓取基本URL来抓取该内容。

© www.soinside.com 2019 - 2024. All rights reserved.