我希望从“#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)
}
答案 0 :(得分:0)
Franc,遗憾的是,这无法发挥作用。如果您在浏览器中打开链接并仔细查看,您会看到它加载第1页,但很快就会出现一个微调器并加载第2页。
这是因为分页是通过 JavaScript / Ajax 控制的。浏览器会激活分页事件,因此检索和解析页面HTML将永远无法进入第2页(或更远)。
URL中的#
字符主要用于链接到页面锚点和JavaScript / Ajax状态控件,在本例中是分页。这两个事件都是客户端(由Web浏览器启动),因此“获取”页面HTML不会触发此类事件。
为什么要提取HTML页面呢?亚马逊有一个extensive API,如果您正在寻找的产品是针对特定搜索产品的话,它很可能会提供您想要的数据。
我建议您查看Amazon API,您可能会发现更容易实现您想要的任何内容。