声明:本文仅代表在2017年11月最新的比较有效的方法。
1.数据爬取
package: rvest/httr
rvest:
read_html(url)
httr:
GET(url,handle=handle(url)) %>%
content(at="parse", encoding=stringi::stri_enc_detect(content(., "raw"))[[1]][1])
2.节点搜索
package: rvest
html_nodes() #CSS/xpath
html_text()/html_attr()/html_attrs()/html_table()
3.规则提取(正则表达式)
package: stringr
str_extract() %>% str_sub() %>% str_trim %>% str_replace()
4.合并保存
alldata=data.frame()
list(link,year,titlecn,authorcn,instcn,abscn,keywordscn,titleen,absen,keywordsen,corauthor,date)->a
a[lapply(a,length)==0]=NA
a[lapply(a,length)>1]=str_c(a[lapply(a,length)>1],collapse="##")
as.data.frame(a,fix.empty.names=F)->b
rbind(alldata,b)->alldata
5.进度条
pb <- tkProgressBar("进度","已完成 %", 0, 100)
#显示进度条
info<- sprintf("%s年 %d / %d 已完成 %d%%", year,i,length(wlinks),round(j*100/length(ylink)))
setTkProgressBar(pb, j*100/length(ylink), sprintf("进度 (%s)", info),info)
6.设置延迟
Sys.sleep(0.75)原文作者:;如有侵权,请联系管理员删除。