2016-08-05 114 views
0

我正在使用RSelenium進行網頁抓取。現在我有一個來自動態生成的網頁的特定XML節點的xpath。子節點是同一類型的。但是,我沒有關於子節點數量的先驗知識。 (例如,當您在購物網站上搜索稀有物品時,可能會遇到這種情況。)RSelenium - 如何獲取節點的子節點號及其xpaths

一般情況下,如何獲取以下信息?

1)節點的子節點的編號。 2)上面的xpath(s)。我的目標是在每個子節點上應用動作(例如填充,檢查或點擊,取決於節點的類型)。

我看到一些xpaths在Chrome中使用xpath助手。然後我完全卡住了。

優選使用RSelenium舉例說明。 httr + rvest也是可以接受的。

回答

1

一個rvest的解決辦法是以下幾點:

require(rvest) 
your_xpath = "YOUR XPATH" 
doc <- read_html(remDr$getPageSource()[[1]]) 
children <- doc %>% html_node(xpath=your_xpath) %>% html_children() 

然後你可以在孩子和迭代他們不管你喜歡

for (i in 1:length(children)){ 
    webElem <- remDr$findElement(using = 'xpath', sprintf("%s/*[%d]", your_xpath, i)) 
    if(classify_node(children[i]) == "click"){ 
    webElem$$clickElement() 
    } else {...} 
}