代码之家  ›  专栏  ›  技术社区  ›  Bill Huang

RSelenium-如何获取节点的子节点号及其xpath

  •  0
  • Bill Huang  · 技术社区  · 8 年前

    我正在使用RSelenium进行网页抓取。现在,我从动态生成的网页中获得了某个XML节点的xpath。子节点的类型相同。然而,我对子节点的数量没有先验知识。(例如,当你在购物网站上搜索稀有商品时,你可能会遇到这种情况。)

    1) 节点的子节点数。 2) 上面的xpath。我的目标是在每个子节点中应用操作(例如填充、检查或单击,取决于节点的类型)。

    我在chrome中看到一些使用xpath助手的xpath。然后我就完全被卡住了。

    最好使用RSelenium作为示例。httr+rvest也是可以接受的。

    1 回复  |  直到 8 年前
        1
  •  1
  •   Rentrop    8 年前

    A. 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 {...}
    }