今天主要介绍一下,文本挖掘的数据获取方式,上一篇很多人在问数据如何获取,今天给大家介绍下数据获取的方式,主要利用爬虫抓取数据。基于,之前对python爬虫没接触过,尝试过用R爬虫,今天就来介绍下,如何用R爬取股吧的评论数据,关于R爬虫网上也有很多参考资料,在参考了网上大神的思路方法后,自己尝试了对股吧数据进行爬取,结果爬取下来的数据还是比较规范,能够满足我的分析需求的。
R进行爬虫,经常用的包有RCurl和rvest两个包,这里我主要介绍rvest包爬虫,大致的思路其实是一样的,爬虫之前需要对网页有个基本的了解,会查看网页相应的审核元素,找到相应的节点所在的位置,找到节点的类型class,这些了解了,后面爬虫就会得心应手很多。不多说了,先上代码吧。
library(rvest)
library(xml2)
library(sqldf)
library(gsubfn)
library(proto)
library(RSQLite)
library(DBI)
library(data.table)
library(stringr)
extradata<-function(i,non_pn_url){
url<-paste0(non_pn_url,i)##先给一个没有页码的网页#
web<-html(url)#通过html解析网页##
title<-web %>% html_nodes("div.articleh span.l3 a")%>%html_text()%>% .[c(seq(1,86,1))] %>% as.character()##找到评论数据对应的节点类型,匹配获取节点##
paperlink<-gsub("\\?source\\=search","",web %>% html_nodes("div.articleh") %>% html_attr("href"))%>% .[c(seq(2,20,2))]##获取网页跳转连接##
paperlink<-paste0("/",paperlink) %>% as.character()###输入无页码链接 ##
author<-web %>% html_nodes("div.articleh span.l4") %>% html_text()##匹配获取作者的class节点
posttime<-web %>% html_nodes("div.articleh span.l6") %>% html_text()
update_time<-web %>% html_nodes("div.articleh span.l5") %>% html_text()
count_of_comment<-web %>% html_nodes("div.articleh span.l2") %>% html_text()
count_of_read<-web %>% html_nodes("div.articleh span.l1") %>% html_text()
data.frame(title,author,posttime,update_time,count_of_comment,count_of_read)##构造一个数据框##
}
finaldata<-data.frame()
url<-'/list,002373.html?from=BaiduAladdin'##获取有页码的第一页的链接
for(i in 1:25){
extradata(i,url)
finaldata<-rbind(finaldata,extradata(i,url))
}##这里是抓取了25页的数据#
finaldata1<-as.data.frame(finaldata)
names(finaldata)
dim(finaldata1)
head(finaldata)
最后来看看爬虫抓取的数据效果
爬虫内容今天就介绍到这里,后续有新的发现在跟进 ,希望小伙伴们多提提意见,这里也感谢参考的牛人大神们的分享。
文章改编自《文本挖掘之数据爬虫》
原文链接:/community/subjectDetails/175
欢迎加入京东金融量化官方交流群:456448095,有任何问题和建议均可讨论交流。