Я пытаюсь извлечь элементы, соответствующие 2 разным типам, в документе HTML, сохраняя при этом порядок.
Нетрудно извлечь каждый тип элемента отдельно (см. Пример), но я не могу понять, как извлечь их оба за один раз и сохранить порядок, в котором они появляются на веб-странице.
Минимальный пример
Вот несколько фиктивных HTML
dummy_html <- "<p>hi there</p>
<p>2nd para</p>
<div>unwanted stuff</div>
<span>something new</span>
<p>3rd para</p>
<span>extra stuff</span>
<div>more unwanted stuff</div>
<p>4th para</p>"
Предположим, что мы хотим извлечь все элементы p
и все элементы span
(и сохранить порядок их появления)
# p elements on their own
library(rvest)
dummy_html %>% read_html %>% html_nodes("p")
{xml_nodeset (4)}
[1] <p>hi there</p>
[2] <p>2nd para</p>
[3] <p>3rd para</p>
[4] <p>4th para</p>
# span elements on their own
dummy_html %>% read_html %>% html_nodes("span")
{xml_nodeset (2)}
[1] <span>something new</span>
[2] <span>extra stuff</span>
Но как мы можем извлечь все элементы или ? т. е. все элементы p и все элементы span * вместе , поэтому желаемый результат:
{xml_nodeset (6)}
[1] <p>hi there</p>
[2] <p>2nd para</p>
[3] <span>something new</span>
[4] <p>3rd para</p>
[5] <span>extra stuff</span>
[6] <p>4th para</p>
Обратите внимание на сохранение порядка (т. е. p
и span
вкрапления)
То, что я пробовал до сих пор
Я пробовал очевидное dummy_html %>% read_html %>% html_nodes("span|p")
, но выдает ошибку.