У меня есть следующий HTML-код:Хо, я получаю html элемента списка, который == «некоторое значение»?
<ul class="list" role="listbox" id="list1">
<li class="lvl2">
<div class="lvl3" id="lvl3-nb-1">
choice1
</div>
</li>
<li class="lvl2">
<div class="lvl3" id="lvl3-nb-2">
choice2
</div>
</li>
<li class="lvl2">
<div class="lvl3" id="lvl3-nb-3">
choice3
</div>
</li>
</ul>
я хотел бы получить HTML (внешний HTML, HTML + элемент, селектор, Xpath, это не имеет значения) элемента, который == "choice2"
Как это сделать с помощью RSelenium
?
Благодаря
EDIT для осветления: в id
s элементов списка являются динамическими (и в основном случайными), поэтому решение мне нужно не может ссылаться на их HTML или CSS. Тем не менее, я точно знаю значение choice1
, choice2
и choice3
(и в основном все остальное, я знаю, что классы будут называться list
, lvl2
и lvl3
).
Покушение на воспроизводимый пример:
HTML:
<ul class="list" id="list1">
<li class="lvl2">
<div class="lvl3" id="n123">
paul
</div>
</li>
<li class="lvl2">
<div class="lvl3" id="n471">
john
</div>
</li>
<li class="lvl2">
<div class="lvl3" id="n951">
ringo
</div>
</li>
</ul>
R:
> library(RSelenium)
> startServer()
> mybrowser <- remoteDriver()
> mybrowser$open()
> mybrowser$navigate("http://example.com")
> list_of_beatles <- mybrowser$findElement(using = 'css selector', "ul#list.list1")
> print(unlist(strsplit(as.character(list_of_beatles$getElementText()), "\n")))
[1] "paul" "john"
[3] "ringo"
> # Let's say I want john's CSS selector, I'd want somethign kind of like that :
> css_selector_of_this_thing(which(unlist(strsplit(as.character(list_reponse$getElementText()), "\n")) == "john"))
> # Which would output, for instance "div#lvl3.n471"
Какой тег, который вы используете, немного расплывчато, но с использованием 'rvest',' html%>% read_html()%>% html_nodes ('# lvl3-nb-2')%>% html_text (trim = TRUE) '. Отрегулируйте, как вам нравится. – alistaire
Воспроизводимый пример поможет. – pbahr
Я редактировал вопрос, чтобы надеяться, сделать его более ясным. –