R爬虫实践

本文介绍了使用R语言进行网络爬虫的基本步骤,以爬取豆瓣电影2019年某部电影的评论并生成词云图为例,详细讲解了所需工具、选取电影、爬取过程及代码实现。文章还提供了相关资源链接和停用词表下载。
摘要由CSDN通过智能技术生成

R语言的第一个爬虫实践

近期在学习R语言时遇到了网络爬虫的作业,经过不懈的努力,终于写好了小编的第一个网络爬虫,希望对你有所帮助,小编是个初学者,也是第一次写博客,不足之处还请多多指教。

这里爬取豆瓣2019年一部电影评论,并形成词云图。

需要准备的工具

谷歌浏览器。

选取要爬的电影

打开豆瓣 任意选取一部电影点开评论,然后点击右上角放大镜一样的logo,再点击全部评论(需要安装相关的插件请自行百度);
以摩登家庭为例
1.
在这里插入图片描述2.
在这里插入图片描述
3.
在这里插入图片描述
4.
在这里插入图片描述
5.点击看过后,会出现多个黄色的框框,将鼠标停在任意一条评论上会出现以下的字母 p span 记住这个字母(原谅小编的涂鸦^ _^)
在这里插入图片描述
把此时浏览地址栏的地址复制下来,如果不爬取其他的内容可以先关闭chrome浏览器。

程序如下

导入必不可少的包


install.packages("rvest")
install.packages("httr")

rvest 是爬取静态网页常用的包,读者可以自行学习。其中的函数小编是通过别人的博客了解的,需要的可以安利一波 https://blog.csdn.net/weixu22/article/details/79237512
httr 的详解参考另一个大佬的总结 https://blog.csdn.net/qq_38984677/article/details/81610436
(感谢各位大佬的总结,如果有帮助到你请顺手点个赞)

画词云图相关的包

画词云图很灵活,不一定要这么多包

#install.packages("xml2")
#install.packages("RCurl")
#install.packages("jiebaRD")
#install.packages("jiebaR")
#install.packages("data.table")
#install.packages("stringr")
#install.packages("rJava")
#install.packages("RColorBrewer")
#install.packages("devtools")
#install.packages("wordcloud2")
#install.packages("Rwordseg")
#install.packages("readxl")

正常情况下都可以直接下载

这些包都是画词云图常用的,这里不再赘述

加载相关的包

#library(xml2)
library(rvest)
#library(RCurl)
#library(jiebaRD)
#library(jiebaR)
#library(data.table)
#library(stringr)
#library(rJava)
#library(Rwordseg)
#library(RColorBrewer)
#library(Rwordseg)
#library(wordcloud2)
#library(readxl)
library(httr)

编写自定义函数,实现网址的拼接

get <- function(i){
    t<-'30454227'    #豆瓣上电影编号,通过复制的网址可以看到每一部电影的编号都不同
    t1 <- 'https://movie.douban.com/subject/' #豆瓣固定的网址前部分
    t2 <- '/comments?start='  #设置开始页
    t3 <- '&limit=20&sort=new_score&status=P' #设置每页20条评论
    url<-paste0(t1,t,t2,i,t3)    #拼接网址,实现翻页的功能
    return(url)
    }

由于一个页面只有20条评论,通过一个循环得到多个页面的评论

n <- 50  #设置爬取评论条数
for(i in 0:(n-1)){
   web<-get(i)   #调用函数得到不同的网址
   webpages <- read_html(web)  #开始爬取数据
  
  #获取网页数据
   data<-html_nodes(webpages,'p span')  #上面调用插件时代表评论框的字母 p span
   data<-html_text(data_html)     #爬到的文本数据
   #print(data)   #主要看是不是在开始爬取了,不需要可以省略
   Sys.sleep(1)
   }

开始分词处理
停用词表可以到CSDN下载,如果没有币的话,小编的仅供参考**
百度网盘:https://pan.baidu.com/s/1bTdrcQjso40rIL3fXKI59Q
提取码:dr7b


p=worker(stop_word1="E:/StopWords.text")   #加载停用词表
seg<-segment(data,p)      #初步分词处理
 
#去除特殊的词
seg <- gsub("\n","", seg) #删除掉换行的
seg <- gsub(" ","", seg)  #删除掉空格
seg<- gsub("[0-9]+?","",seg) #去除数字
seg <- gsub("导演","",seg)
seg <- gsub("主演","",seg)
seg <- gsub("类型","",seg)
seg <- gsub("地区","",seg)
seg <- gsub("片长","",seg)
seg <- gsub("上映","",seg)
seg <- gsub("\\(","",seg)
seg <- gsub("\\)","",seg)
seg <- gsub("https","",seg)     #去除网址
seg <- gsub("www","",seg)
seg<- gsub("a-zA-Z","",seg)    #去除字母

进一步处理,

按词频画词云图

#开始统计词频
seg<-table(unlist(seg))
seg<-rev(sort(seg))
seg<-data.frame(seg)
seg<-subset(seg,nchar(as.character(seg))>1)  #过滤掉只有一个字的词
seg30=subset(seg,seg$Freq>=1)  #按词频进行过滤

wordcloud2(seg30,shape = 'star',size =0.5)  #根据结果形成词云图

最终结果

在这里插入图片描述

创作不易,如果对你有帮助,请顺手点个赞,万分感谢

  • 7
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值