我正在尝试与和rvest
并行使用从网页中抓取值。具体来说,我正在使用称为 TMK 的房地产标识符从网站上检索房产的人口普查区号。foreach
doParallel
在下面的示例代码中,foreach
循环在运行时给出了所需的结果(包含区域编号的向量)%do%
,而不是运行%dopar%
。
require(rvest); require(foreach); require(doParallel)
registerDoParallel(cores = 4)
# sample input values used to generate html
tmklist <- c(91136088, 73006073, 92023027, 45061064)
# read html for each TMK
# DOES NOT PRODUCE DESIRED RESULT WHEN USED WITH %dopar%
tmkhtml <- foreach(i = seq_along(tmklist)) %do% {
read_html(paste0(paste0('http://gis.hicentral.com/pubwebsite/TMKDetails.aspx?tmk=', tmklist[[i]]),'&lyrLst=0|0|0|0|0|0|0|0|0|0|0|0|0|13|0|15|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|lblsaerial2008&unit=0000&address='))
}
# scrape census tract number from html page
# loop returns vector of chr(0) if %dopar% used instead of %do%
tract.num <- list()
for(i in 1:length(tmkhtml)){
tract.num[[i]] <- html_text(html_nodes(tmkhtml[[i]], '#lblTrackNumber'))
}
我(可能错误地)推断出并行后端是罪魁祸首,但我之前在其他应用程序中使用过很多次,似乎找不到问题所在。