在我的应用程序中,我想获取任何产品的价格(用户输入想要的 URL)。
我现在搜索了很多,我发现有几个Webscrapers
,我想我SwiftSoup
现在会使用。但是,我找不到一个教程来教如何scrape
使用 "dynamic" 获取元素tags
。例如,price
网站上的产品对于每个网站看起来都不同:
示例 1:
<div class="price">82 EUR</div>
示例 2:
<span class="gl-price__value">€ 139,95</span>
示例 3:
<span id="priceblock_ourprice" class="a-size-medium a-color-price priceBlockBuyingPriceString">79,99 €</span>
我知道我可以scrape
这样的元素:
let html: String = "<a id=1 href='?foo=bar&mid<=true'>One</a> <a id=2 href='?foo=bar<qux&lg=1'>Two</a>";
let els: Elements = try SwiftSoup.parse(html).select("a");
for element: Element in els.array(){
print(try element.attr("href"))
}
但是scrape
动态的最好方法是什么?在这方面找不到任何东西,所以我很高兴得到每一个帮助:)
更新
如果我知道确切的“类名”,我设法得到了正确的“价格”:
let url = "https://www.adidas.de/adistar-trikot/CV7089.html"
let className = "gl-price__value"
do {
let html: String = getHTMLfromURL(url: url)
let doc: Document = try SwiftSoup.parse(html)
let price: Element = try doc.getElementsByClass(className).first()!
let priceText : String = try price.text()
result.text = priceText
} catch Exception.Error(let type, let message) {
print(message)
} catch {
print("error")
}
但是,我想完成这项工作,以便上述所有 3 个示例都有效。现在我正在努力获得包含所有三个示例的正确“正则表达式”......有人知道吗?