一直都想学习用R语言爬虫,昨天晚上初步学习了一下rvest包和magrittr包。 首先是magrittr包,主要定义了四个管道操作符%>% %T>% %$% %<>%。我现在只用了%>%(向右操作符),它是把左侧的数据或表达式传递给右侧的函数或表达式进行运行,可以连续操作。 如果我们想要实现取100个服从正态分布的随机数,再求这一百个数的绝对值并乘以50,再组成10*10的方阵,计算方阵每行均值,四舍五入保留整数,把结果除以7,画出余数直方图。常规的code: set.seed(1234) a=rnorm(100) b=abs(a)*50 c=matrix(b,ncol=10) d=round(apply(c,1,mean)) hist(d) 如果用上%>%,code变成: set.seed(1234) rnorm(100)%>%abs%>%'*'(50)%>%matrix(ncol=10)%>%round%>%'%%'(7)%>%hist 在爬虫中会经常用到%>%。 rvest包中: read_html() 读取html文档,可以是网站链接,html本地文件,包含html的字符串也可以 html_nodes() 选择提取html文档中特定元素。可以是CSS selector,也可以是xpath selector。强烈推荐谷歌浏览器,右击所需要查看的元素,蛋鸡检查,在开发者模式中通过右击蓝色区域,单击copy,选择copy selector得到CSS,单击copyxpath得到Xpath。我觉得更好用的是谷歌浏览器的SelectorGadget插件,可以在网上下载。 然后rvest包里面还有很多函数,但我没用过,不大了解。 这一次爬取了拉勾网java职位。 library(rvest) library(magrittr) library(xml2) site1<-'https:>-'https:> site2<-' filteroption=' for(page in 1:5){ site<-paste(site1,page,site2,page,sep='>-'> web<> } job<-web%>%html_nodes('h3')%>%html_text() company<-web%>%html_nodes('.company_name a')%>%html_text() benefit<-web%>%html_nodes('.li_b_r')%>%html_text() wage<-web%>%html_nodes('.money')%>%html_text() position<-web%>%html_nodes('em')%>%html_text() position<> information<> write.csv(information,'C:\\Users\\Administrator\\Desktop\\11111.csv') 最后结果如下: 有什么问题可以一起讨论的~~~ -web%>-web%>-web%>-web%>-web%> |
|