Я новичок в Swift и пытаюсь получить данные JSON из HTML, который я захватил. Я получаю HTML-код с веб-сайта, и во всем результате есть одна строка с данными. Настройка как: var obj = *JSON data*
Как я могу проанализировать результаты строки, чтобы получить только эту строку и преобразовать данные (правая часть знака равенства) в JSON?
Вот мой код для получения данных (testURL — это URL-адрес веб-сайта):
if let url = testURL {
do {
let contents = try String(contentsOf: url)
print(contents)
} catch {
// contents could not be loaded
}
} else {
// the URL was bad!
}
Вы можете использовать этот модуль СвифтСуп для разбора HTML.
Этот блок кода перебирает теги, такие как сценарий, и получает свои атрибуты, такие как источник.
if let url = testURL {
do {
let contents = try String(contentsOf: url)
print(contents)
do {
let doc: Document = try SwiftSoup.parse(contents)
for item in try doc.select("script") {
let json = try item.attr("src")
print(json)
}
} catch Exception.Error(let type, let message) {
print(message)
} catch {
print("error")
}
} catch {
// contents could not be loaded
}
} else {
// the URL was bad!
}
Замените сценарий тегом json и источник атрибутом, содержащим json.
Не забудьте добавить импорт SwiftSoup
Надеюсь, вы получите желаемый результат.
Здравствуйте, я добавил SwiftSoup и использовал ваш код, но когда я заменил «src» на obj, имя переменной, указывающее на JSON, он просто распечатывает весь полученный HTML (от print(contents)
). Но переменная json
ничего не печатает. Что вы подразумеваете под тегом JSON? Я также просмотрел документы, прежде чем писать это, и не смог найти/попробовать ничего, что помогло бы. То, что я хочу, находится внутри <script>. Но результат HTML имеет несколько <script>
Дайте мне ваш html или URL, чтобы получить html
Где HTML-код?