Я получаю HTML-код веб-страницы с помощью этой библиотеки синтаксического анализа, которая называется Kanna . В основном урезанная версия выглядит следующим образом.
<!DOCTYPE html>
<html lang="en" class="no-js not-logged-in client-root">
<head>
<meta charset="utf-8">
</head>
<body>
<script type="text/javascript">
window._sharedData = {
// Some JSON
};
</script>
<script type="text/javascript">
// Javascript code
</script>
<script type="text/javascript">
// More Javascript code
</script>
</body>
</html>
В body
имеется несколько тегов script
. Я хочу получить доступ к переменной с именем window._sharedData
и извлечь ее значение, которое является словарем JSON.
Я пытался использовать регулярные выражения, но он возвращает nil
. Может, что-то не так с моим рисунком?
if let doc = try? HTML(url: mixURL, encoding: .utf8), let body = doc.body, let htmlText = body.text {
let range = NSRange(location: 0, length: htmlText.utf8.count)
let regex = try! NSRegularExpression(pattern: "/<script type=\"text/javascript\">window._sharedData = (.*)</script>/")
let s = regex.firstMatch(in: htmlText, options: [], range: range)
print(s)
}
Или есть лучший способ сделать это?