Я пытаюсь очистить какой-то веб-сайт с помощью Cheerio, однако, поскольку приложение является динамическим, содержимое отсутствует в HTML, но в объекте JS, к которому я не уверен, как получить доступ (я пробовал окно, документ и т. Д.)
Мой код:
let axios = require('axios') // HTTP client
let cheerio = require('cheerio') // HTML parsing package
const url = 'https://www.foo.com'
const getWebsiteContent = async (url) => {
try {
const response = await axios.get(url)
const $ = cheerio.load(response.data)
console.log(response.data)
} catch (error) {
console.error(error)
}
}
getWebsiteContent(url)
Результат console.log (я просто вставляю ту его часть, к которой мне нужен доступ):
<!DOCTYPE html>
<html lang='en' ng-app='Test'>
<head>
</head>
<body class='' data-allow-utf8='false'>
<h1>HEADER</h1>
<script>
var matchData = function () {
Live.load.main({
version: "1.2",
sports: [
{
title: 'matchone',
subtitle: 'foo'
},
{
title: 'matchtwo',
subtitle: 'aaa'
}
],
})
}
</script>
<!-- More stuff -->
</body>
</html>
Данные, к которым я хочу получить доступ, - это массив sports
, содержащийся в этом методе Live.load.main
внутри функции matchData
.
Я даже не уверен, является ли Cheerio правильным инструментом, так как я ожидал, что данные будут в куске HTML, но, очевидно, загружен таким образом, что я могу видеть его только в объекте JS при запускеПОЛУЧИТЬ запрос.