繁体   English   中英

rvest找不到带有xpath的节点

[英]rvest cannot find node with xpath

这是我为ppp项目开发的网站

我想使用xpath选择如下所示的节点 在此处输入图片说明

我通过使用检查元素得到的xpath是“ // * [@ id =” pppListUl“] / li 1 / div 2 / span 2 / span”

我的评论如下:

a <- html("http://www.cpppc.org:8082/efmisweb/ppp/projectLivrary/toPPPList.do")
b <- html_nodes(a, xpath = '//*[@id="pppListUl"]/li[1]/div[2]/span[2]/span')
b

然后我得到了结果

{xml_nodeset (0)}

然后,我检查了页面源,甚至没有找到关于我选择的项目的任何信息。

我想知道为什么无法在页面源代码中找到它,进而如何通过rvest获取节点。

它对内容进行XHR请求。 只需使用这些数据即可(非常干净):

library(httr)

POST('http://www.cpppc.org:8082/efmisweb/ppp/projectLivrary/getPPPList.do?tokenid=null',
     encode="form",
     body=list(queryPage=1,
               distStr="",
               induStr="",
               investStr="",
               projName="",
               sortby="",
               orderby="",
               stageArr="")) -> res

content(res, as="text") %>% 
  jsonlite::fromJSON(flatten=TRUE) %>% 
  dplyr::glimpse()

(StackOverflow不够先进,无法让我发布它的输出,因为它认为它是垃圾邮件)。

这是一个4元素列表,具有字段totalCountlist (具有实际数据), currentPagetotalPage

看起来您可以更改queryPage表单变量以遍历页面以获取整个列表/数据库,如下所示:

library(httr)
library(purrr)
library(dplyr)

get_page <- function(page_num=1, .pb=NULL) {

  if (!is.null(.pb)) pb$tick()$print()

  POST('http://www.cpppc.org:8082/efmisweb/ppp/projectLivrary/getPPPList.do?tokenid=null',
       encode="form",
       body=list(queryPage=page_num,
                 distStr="",
                 induStr="",
                 investStr="",
                 projName="",
                 sortby="",
                 orderby="",
                 stageArr="")) -> res

  content(res, as="text") %>% 
    jsonlite::fromJSON(flatten=TRUE) -> dat

  dat$list

}

n <- 5 # change this to the value in `totalPage`

pb <- progress_estimated(n)
df <- map_df(1:n, get_page, pb)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM