Очистка сводной таблицы Yahoo Finance с помощью Cheerio

Я пытаюсь получить «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)
}
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
0
108
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я не уверен, откуда вы берете свой селектор (я вообще не вижу его на странице), но у меня это работает:

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

О, отлично, это работает! Большое спасибо. Мне нравится узнавать о вашем методе. Есть ли какой-нибудь учебник, чтобы я мог опереться.

Newbie 02.06.2024 16:13

Я посмотрел view-source:your_url, затем нажал Ctrl+F и ввел нужные данные, а затем выбрал «лучший» селектор для элемента (где «лучший» определяется эвристическим предположением чего-то уникально идентифицируемого и, вероятно, стабильного). , но не слишком жесткий и склонный к поломке при изменении структуры HTML).

ggorlen 02.06.2024 16:18

Я проверял теги с помощью Inspect в Google Chrome. Какой браузер вы используете?

Newbie 02.06.2024 16:30

Firefox, но это не имеет значения. Inspect часто бывает неточным, поскольку показывает DOM после запуска JS. Выполнение запроса на выборку загружает только базовую HTML-страницу, а не сценарии. view-source: дает вам текст, который вы фактически получаете, когда получаете страницу с помощью простого HTTP-запроса, как вы это делаете. Если данных нет, см. Как я могу парсить страницы с динамическим контентом с помощью node.js?

ggorlen 02.06.2024 16:34

Да, из Firefox я вижу то, что вы объяснили. Я узнал от вас ключевой метод. Очень оценил.

Newbie 02.06.2024 16:42

Другие вопросы по теме