Как разобрать определенный контент в HTML для моего приложения

8-разрядные и 16-разрядные указатели используются в большинстве низкопрофильных микроконтроллеров. Это означает, что каждая стиральная машина, микро, холодильник, более старые телевизоры и даже автомобили.

Вы могли бы сказать, что это не имеет никакого отношения к программированию на реальном мире. Но вот один пример реального мира: Arduino с 1-2-4k ram (в зависимости от чипа) с 2 байтовыми указателями.

Это последнее, дешевое, доступное для всех и достойное кодирование.

0
задан Met Boz 16 January 2019 в 19:22
поделиться

1 ответ

Как прокомментировал gavsta707, вы можете искать переменную в контенте HTML с помощью регулярного выражения var dovizHesaplama = '(.+)'.

Затем декодируйте JSON, используя JSONDecoder. Обратите внимание, что вам нужно будет указать формат даты YYYY-MM-dd'T'HH:mm:ss.SSSSSSSZZZZZ.

Некоторый код, который делает это, может выглядеть как

import Foundation

struct ExchangeRates: Codable {

    struct Rate: Codable {
        let ask: Double
        let bid: Double
        let time: Date
    }

    struct OtherRates: Codable {
        let EUR: Rate
        let GBP: Rate
        let XAU: Rate
        let AUD: Rate
        let CAD: Rate
        let CHF: Rate
        let CNY: Rate
        let DKK: Rate
        let ETH: Rate
        let NOK: Rate
        let NZD: Rate
        let RUB: Rate
        let SAR: Rate
        let SEK: Rate
        let TRL: Rate
        let XAG: Rate
        let XPD: Rate
        let XPT: Rate
    }

    let USD: OtherRates
}

let jsonPattern = try NSRegularExpression(pattern: "var dovizHesaplama = '(.+)'")
let decoder = JSONDecoder()
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "YYYY-MM-dd'T'HH:mm:ss.SSSSSSSZZZZZ"
decoder.dateDecodingStrategy = .formatted(dateFormatter)

let data = try Data(contentsOf: URL(string: "https://yatirim.akbank.com/tr-tr/doviz/sayfalar/default.aspx")!)
if let string = String(data: data, encoding: .utf8) as NSString? {
    if let match = jsonPattern.firstMatch(in: string as String, range: NSRange(location: 0, length: string.length)) {
        let json = string.substring(with: match.range(at: 1))
        let rates = try decoder.decode(ExchangeRates.self, from: json.data(using: .utf8)!)
        print(rates)
    }
}
0
ответ дан Damiaan Dufaux 16 January 2019 в 19:22
поделиться
Другие вопросы по тегам:

Похожие вопросы: