Как извлечь тег <b> из div с помощью rvest?

У меня есть этот html:

<div class = "monty">album: <b>And Now For Something Completely Different</b> (1998)</div>

В настоящее время я использую этот xpath, чтобы найти его:

    for_monty <- rvest::html_node(for_html_code, xpath = "/html/body/div[2]/div/div[2]/div[11]/div[1]/b")

Но не на всех страницах есть этот номер div, поэтому иногда он ничего не очищает. Единственный постоянный класс — это monty, и я хотел бы вытащить только тег <b> из этого div.

Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Введение в CSS
Введение в CSS
CSS является неотъемлемой частью трех основных составляющих front-end веб-разработки.
Как выровнять Div по центру?
Как выровнять Div по центру?
Чтобы выровнять элемент <div>по горизонтали и вертикали с помощью CSS, можно использовать комбинацию свойств и значений CSS. Вот несколько методов,...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Travel Booking Angular Template один из лучших Travel & Tour booking template in the world. 30+ валидированных HTML5 страниц, которые помогут...
0
0
115
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

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

Звучит так, как будто ваш xpath должен быть //div[@class='monty']/b

Мы можем попробовать это как полный репрекс на вашем собственном фрагменте:

library(rvest)
#> Loading required package: xml2

html <- "<div class=\"monty\">album: <b>And Now For Something Completely Different</b> (1998)</div>"

read_html(html) %>% 
  html_nodes(xpath = "//div[@class='monty']/b")
#> {xml_nodeset (1)}
#> [1] <b>And Now For Something Completely Different</b>

Created on 2020-12-14 by the reprex package (v0.3.0)

Ого, спасибо большое! Это работает отлично. Где-нибудь я могу прочитать больше о таких путях и о том, как их сделать? Не нашел как написать, поэтому спрашивал здесь. Или люди обычно используют какое-то расширение Chrome (или что-то еще) для их создания?

Aman 14.12.2020 13:53

@Aman Нет, я обнаружил, что при использовании расширений Chrome или Firefox, которые дают вам xpaths, как правило, используется индексация, что делает их гораздо более уязвимыми для незначительных изменений в структуре html. Вы можете познакомиться с xpath здесь, а прямо здесь, в Stack Overflow, есть много отличных вопросов и ответов для более сложных вещей.

Allan Cameron 14.12.2020 13:59

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