Html rvest找不到具有xpath的节点
这是我浏览的网站 我想使用xpath来选择如下所示的节点 我通过使用inspect元素获得的xpath是“/*[@id=“pppListUl”]/li/div/span/span” 我的脚本如下所示:Html rvest找不到具有xpath的节点,html,r,xml,web-scraping,rvest,Html,R,Xml,Web Scraping,Rvest,这是我浏览的网站 我想使用xpath来选择如下所示的节点 我通过使用inspect元素获得的xpath是“/*[@id=“pppListUl”]/li/div/span/span” 我的脚本如下所示: a <- html("http://www.cpppc.org:8082/efmisweb/ppp/projectLivrary/toPPPList.do") b <- html_nodes(a, xpath = '//*[@id="pppListUl"]/li[1]/div[2]
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
然后我检查了页面来源,我甚至没有找到关于我选择的项目的任何信息
我想知道为什么在页面源代码中找不到它,反过来,如何通过rvest获取节点。它对内容发出XHR请求。只需处理这些数据(非常干净): (StackOverflow不够先进,无法让我发布它的输出,因为它认为这是垃圾邮件) 这是一个4元素列表,包含字段
totalCount
、list
(包含实际数据)、currentPage
和totalPage
看起来您可以更改queryPage
form变量来迭代页面以获得整个列表/数据库,类似于:
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)
库(httr)
图书馆(purrr)
图书馆(dplyr)
获取页面资源
内容(res,as=“text”)%%>%
jsonlite::fromJSON(flatte=TRUE)->dat
dat$列表
}
N
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()
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)