Swift如何使用包含#的URL加载HTML页面

时间:2016-01-12 07:39:50

标签: html xcode swift url load

我希望从“#2”结尾加载HTML页面的URL地址。 我的问题是每次加载第1页(#1)。

为什么会这样?

func getUrl ( Page: Int) -> String
{ 
    let myUrlString="http://www.amazon.de/gp/bestsellers/digital-text/530887031/ref=zg_bs_nav_kinc_1_kinc#2"
    if let myURL = NSURL(string: myUrlString)
    {
    var error: NSError?
    let myHTMLString: NSString?
    do { myHTMLString = try NSString(contentsOfURL: myURL, encoding: NSISOLatin1StringEncoding) }

    catch let error1 as NSError
    {
    error = error1
    myHTMLString = nil
    }

    if let error = error    { print("Error !!: \(error)", terminator: "") }
    else                    {
                              HTMLPage=String(myHTMLString)
                              //print("HTML : \(myHTMLString)")
                            }
    }
    else { print("Error 123: \(myUrlString) doesn't seem to be a valid URL", terminator: "") }

    return (HTMLPage)
}

1 个答案:

答案 0 :(得分:0)

Franc,遗憾的是,这无法发挥作用。如果您在浏览器中打开链接并仔细查看,您会看到它加载第1页,但很快就会出现一个微调器并加载第2页。

这是因为分页是通过 JavaScript / Ajax 控制的。浏览器会激活分页事件,因此检索和解析页面HTML将永远无法进入第2页(或更远)。

URL中的#字符主要用于链接到页面锚点和JavaScript / Ajax状态控件,在本例中是分页。这两个事件都是客户端(由Web浏览器启动),因此“获取”页面HTML不会触发此类事件。

这很难过,但可以做些什么?

为什么要提取HTML页面呢?亚马逊有一个extensive API,如果您正在寻找的产品是针对特定搜索产品的话,它很可能会提供您想要的数据。

我建议您查看Amazon API,您可能会发现更容易实现您想要的任何内容。