作者celestialgod (天)
看板R_Language
标题Re: [问题] parSapply问题
时间Fri Mar 18 00:39:58 2016
※ 引述《SFMAndroid (安卓发送)》之铭言:
: [问题类型]:
:
: 效能谘询(我想让R 跑更快)
:
: [软体熟悉度]:
: 请把以下不需要的部份删除
: 入门(写过其他程式,只是对语法不熟悉)
:
: [问题叙述]:
: 请简略描述你所要做的事情,或是这个程式的目的
: 爬PTT文章,原本是用sapply加上自定义函数,
: 但实在跑太久,想说用snow::parSapply会不会比较快,
: 但一直遇到问题@@
: 除了找不到所有httr里的函数外
: 即使用clusterEvalQ把所有未定义的函数都定义後,
: 就出现is.url(url) is not true的无限轮回...
: 但改回用sapply除了跑很久外完全正常,
: 请问有没有大大知道该怎麽办??
: 感谢~
: [程式范例]:
:
: https://gist.github.com/anonymous/a45f6d04254adb27e64a
:
: [环境叙述]:
:
: R version 3.2.1 (2015-06-18)
: Platform: i386-w64-mingw32/i386 (32-bit)
: Running under: Windows 8 x64 (build 9200)
: locale:
: [1] LC_COLLATE=Chinese (Traditional)_Taiwan.950
: [2] LC_CTYPE=Chinese (Traditional)_Taiwan.950
: [3] LC_MONETARY=Chinese (Traditional)_Taiwan.950
: [4] LC_NUMERIC=C
: [5] LC_TIME=Chinese (Traditional)_Taiwan.950
: attached base packages:
: [1] parallel stats graphics grDevices utils datasets methods base
:
: [关键字]:
:
: snow, parallel computing
:
不要去写入硬碟在读取,我不确定在平行时候开启硬碟读取会不会出事...
但是我觉得你可以不用去写入硬碟,再重新读入虚耗时间...
好读版:
http://pastebin.com/TKN2jWHr
然後我也不推荐用XML,我比较建议使用xml2 参考
#1MbXOkFc (R_Language)
library(xml2)
library(RCurl)
library(magrittr)
library(stringi)
i <- 2793
data <- NULL
repeat{
url.list <- try(paste(i, '.html', sep='') %>%
paste('
https://webptt.com/cn.aspx?n=bbs/Boy-Girl/index', ., sep='') %>%
xml2::read_html() %>%
xml2::xml_find_all("//div[@class='title']/a[@href]") %>%
xml2::xml_attr("href"), silent = TRUE)
if (any(grepl("Error", url.list)))
break
data %<>% c(url.list)
i <- i + 1
}
data %<>% paste('
https://webptt.com/cn.aspx?n=', ., sep='')
getDoc <- function(line){
xml2::read_html(line, "UTF-8") %>%
xml2::xml_find_one("//div[@id='main-content']") %>%
xml_text %>% stri_conv("UTF-8", "Big5")
# stri_conv for windows
}
st <- proc.time()
articles <- sapply(data, getDoc)
proc.time() - st
# user system elapsed
# 3.35 3.70 7.21
--
R资料整理套件系列文:
magrittr #1LhSWhpH (R_Language) http://tinyurl.com/1LhSWhpH
data.table #1LhW7Tvj (R_Language) http://tinyurl.com/1LhW7Tvj
dplyr(上) #1LhpJCfB (R_Language) http://tinyurl.com/1LhpJCfB
dplyr(下) #1Lhw8b-s (R_Language)
tidyr #1Liqls1R (R_Language) http://tinyurl.com/1Liqls1R
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 180.218.152.118
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/R_Language/M.1458232801.A.127.html
1F:推 naturalsmen: 喔喔感谢板大 code变得超简洁 也快很多 本来是因为 03/18 20:43
2F:→ naturalsmen: 不熟xml2 想说偷懒用以前写的就好XD 03/18 20:43
稍微研究一下xml2吧,我也不知道你要的是什麽@@
你的程式,html那个变数我跑不出来(摊手
※ 编辑: celestialgod (140.109.73.237), 03/18/2016 21:11:21