Я пытаюсь получить «1y Target Est, 1,140,21» из Yahoo Finance Summary Table, как отмечено красным.
Я попробовал этот код, но не получаю данных. Просматривая тег, я вижу, что «1,1140,21» находится под <td class = "Ta(end) Fw(600) Lh(14px)" data-test = "ONE_YEAR_TARGET_PRICE-value">1,140.21</td>. Я думал, что этот код должен работать, но это не так. Что мне следует изменить?
function test() {
const url = 'https://finance.yahoo.com/quote/NVDA/'
const res = UrlFetchApp.fetch(url, { muteHttpExceptions: true }).getContentText();
const $ = Cheerio.load(res);
const targetPrice = $('td[data-test = "ONE_YEAR_TARGET_PRICE-value"]').text().toString();
console.info(targetPrice)
}



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Я не уверен, откуда вы берете свой селектор (я вообще не вижу его на странице), но у меня это работает:
function test() {
const url = "<Your URL>";
const response = UrlFetchApp.fetch(url);
const $ = Cheerio.load(response.getContentText());
const targetPrice = $('[data-field = "targetMeanPrice"]').text();
console.info(targetPrice); // => 1,140.21
}
Если вытащить его из HTML таким образом не удастся, вы также можете использовать необработанную полезную нагрузку JSON в теге <script type = "application/json" data-sveltekit-fetched data-url = "...">.
См. также Анализ финансовых данных Yahoo
Я посмотрел view-source:your_url, затем нажал Ctrl+F и ввел нужные данные, а затем выбрал «лучший» селектор для элемента (где «лучший» определяется эвристическим предположением чего-то уникально идентифицируемого и, вероятно, стабильного). , но не слишком жесткий и склонный к поломке при изменении структуры HTML).
Я проверял теги с помощью Inspect в Google Chrome. Какой браузер вы используете?
Firefox, но это не имеет значения. Inspect часто бывает неточным, поскольку показывает DOM после запуска JS. Выполнение запроса на выборку загружает только базовую HTML-страницу, а не сценарии. view-source: дает вам текст, который вы фактически получаете, когда получаете страницу с помощью простого HTTP-запроса, как вы это делаете. Если данных нет, см. Как я могу парсить страницы с динамическим контентом с помощью node.js?
Да, из Firefox я вижу то, что вы объяснили. Я узнал от вас ключевой метод. Очень оценил.
О, отлично, это работает! Большое спасибо. Мне нравится узнавать о вашем методе. Есть ли какой-нибудь учебник, чтобы я мог опереться.