不适用于networking抓取中的空白

我想刮掉下面提到的页面,但“ .trans-section ”节点中有一些空格。 “.trans-section”节点正在捕捉“ 标题 ”以及“ 描述 ”。 在某些表中,标题将在那里,但描述缺失。 当描述为空时,我希望数据填充NA 。 由于节点是相同的,我没有得到任何空白行。 请帮忙。

url : https ://patentscope.wipo.int/search/en/result.jsf ? currentNavigationRow = 5& prevCurrentNavigationRow =2& query = FP:(Gaming) & office =& sortOption = Pub%20Date%20Desc & prevFilter =& maxRec = 39316 & viewOption = All & listLengthOption = 200

library(rvest) library(httr) library(XML) FinalD <- data.frame() for (i in 1:10) { rm(Data) ## Creating web page Webpage <- paste0('https://patentscope.wipo.int/search/en/result.jsf?currentNavigationRow=',i,'&prevCurrentNavigationRow=1&query=&office=&sortOption=Pub%20Date%20Desc&prevFilter=&maxRec=64653917&viewOption=All&listLengthOption=100') Webpage <- read_html(Webpage) #Getting Nodes Node_Intclass <- html_nodes(Webpage,'.trans-section') Intclass <- data.frame(html_text(Node_Intclass)) Intclass$sequence <- seq(1:2) Node_Others <- html_nodes(Webpage,'.notranslate') Others <- data.frame(html_text(Node_Others)) Others$sequence <- seq(1:9) ####Others Data <- data.frame(subset(Others$html_text.Node_Others.,Others$sequence == 1)) Data$ID <- subset(Others$html_text.Node_Others.,Others$sequence == 2) Data$Country <- subset(Others$html_text.Node_Others.,Others$sequence == 3) Data$PubDate <- subset(Others$html_text.Node_Others.,Others$sequence == 4) Data$IntClass <- subset(Others$html_text.Node_Others.,Others$sequence == 5) Data$ApplINo <- subset(Others$html_text.Node_Others.,Others$sequence == 7) Data$Applicant <- subset(Others$html_text.Node_Others.,Others$sequence == 8) Data$Inventor <- subset(Others$html_text.Node_Others.,Others$sequence == 9) ###Content ifelse ((nrow(Intclass) == 200), ((Data$Title <- subset(Intclass$html_text.Node_Intclass.,Intclass$sequence == 1))& (Data$Content <- subset(Intclass$html_text.Node_Intclass.,Intclass$sequence == 2))), ((Data$Title <- 0 ) & (Data$Content = 0))) #Final Data FinalD <- rbind(FinalD,Data) } write.csv(FinalD,'FinalD.csv') 

那么,我不是Web Scraping的专家(我刚刚尝试了几次),但是我已经意识到这是一个厌烦的过程,有很多的尝试和错误。

也许你可以使用RSelenium包作为页面dynamic生成。对我来说,它的工作,但它创造了一种混乱的输出,也许它是更好的。

 library(RSelenium) library(rvest) library(dplyr) library(data.table) library(stringr) tables1 <- list() for (i in 1:10) { # i <- 1; i ## Creating web page url <- paste0('https://patentscope.wipo.int/search/en/result.jsf?currentNavigationRow=',i,'&prevCurrentNavigationRow=1&query=&office=&sortOption=Pub%20Date%20Desc&prevFilter=&maxRec=64653917&viewOption=All&listLengthOption=100') rD <- rsDriver( browser="chrome") remDr <- rD$client remDr$navigate(url) page <- remDr$getPageSource() remDr$close() table <- page[[1]] %>% read_html() %>% html_nodes(xpath='//table[@id="resultTable"]') %>% # specify table as there is a div with same id html_table(fill = T) table <- table[[1]] tables1[[url]] <- table %>% as.data.table() rm(rD) gc()} 

我还build议您在循环外部创build您想要读取的页面列表,并创build一个索引,以便在连接失败的情况下从您离开的页面继续。

另外,如果连接失败,请运行

  rm(rD) gc() 

以避免错误,说端口已被使用。

我希望它有帮助。

(未testing)

你可以尝试添加选项:

 read_html(Webpage, options = c("NOBLANKS"))