基于R语言revest包的网络爬虫对豆瓣网TOP250的电影特征的抓取
网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本。
本文我们会用R来爬取豆瓣网上2017年最热门电影的一些特征。
1)前期准备:CSS源查找器--Selector Gadget插件,这个插件可以弥补HTML知识的不足。使用这个插件可以通过点击任一网页中你需要的数据就能获得相应的标签,也可以学习HTML和CSS的知识并且手动实现这一过程。
安装Rvest包,rvest是R语言一个用来做网页数据抓取的包,包的介绍就是“更容易地收割(抓取)网页”
豆瓣网TOP250电影网址https://movie.douban.com/top250?start=0&filter=
2)基本思路:下图是该网站的截图,观察网站后我们可以从网站爬取电影排名rank,电影名称title,电影描述description,电影评分score,电影信息di五大方面的内容
3)具体过程:
Step1:爬取排名rank
爬取的第一步是使用 selector gadget获得排名的CSS选择器。你可以点击浏览器中的插件图标并用光标点击排名的区域。
一旦你已经选择了正确的区域,你需要把在底部中心显示的相应的CSS选择器复制下来,
# 加载包
library(xml2)
library(rvest)
site <- "https://movie.douban.com/top250?start=200&filter="# 从网页读取html代码
webpage <- read_html(site)# 指定要爬取的url
# 用CSS选择器获取排名部分
rank_data_html <- html_nodes(webpage,'em')
# 把排名转换为文本
rank_data <- html_text(rank_data_html)
# 检查一下数据
head(rank_data)
# 数据预处理:把排名转换为数值型
rank_data<-as.numeric(rank_data)
# 再检查一遍
head(rank_data)
得到电影排名rank
Step2:爬取电影标题title
现在可以开始选择电影标题了,可以看见所有的标题都被选择了,你依据个人需要做一些增删。
我们通过selector gadget得到电影标题的源代码.title
#用CSS选择器获取标题部分
title_data_html <- html_nodes(webpage,'.title:nth-child(1)')
# 转换为文本
title_data <- html_text(title_data_html)
# 检查一下
head(title_data)
我们成功的得到了电影标题title,排名第一的电影是肖申克的救赎,第二的是霸王别姬
Step3:爬取电影评分score
与前两步相同利用CSS源查找器获得电影描述的源代码.rating_num
# 爬取评分
score_data_html <- html_nodes(webpage,'.rating_num')
# 转为文本
score_data <- html_text(score_data_html)
# 检查一下
head(score_data)
# 数据预处理:把评分转换为数值型
score_data<-as.numeric(score_data)
head(score_data)
这样我们就得到了电影的评分,正如网站,肖申克的救赎排名第一,得分9.6
Step4:爬取电影描述description
利用CSS源查找器获得电影描述的源代码.inq
#爬取描述
description_data_html <- html_nodes(webpage,'.inq')
# 转为文本
description_data <- html_text(description_data_html)
#查看一下
description_data
description_data=data.frame(description_data)
我们得到电影描述description
Step5:爬取电影详细信息
利用CSS源查找器获得电影描述的源代码p:nth-child(1)
#爬取详细信息
di_data_html <- html_nodes(webpage,'.bd p:nth-child(1)')
# 转为文本
di_data <- html_text(di_data_html)
# 检查一下
head(di_data)
此时我们看到详细信息有很多没用的空格和乱码
我们使用gsub函数剔除
# 移除 '\n' 空格
di_data<-gsub("\n"," ",di_data)
di_data<-gsub(" "," ",di_data)
di_data<-gsub("/...","",di_data)
di_data<-gsub("<U+00A0><U+00A0><U+00A0>","",di_data)
di_data<-gsub("<U+00A0><U+00A0> ","",di_data)
head(di_data)
di=di_data[!di_data=="豆瓣"]
#再检查一下
head(di_data)
再看电影详细信息已经没有多余的空格和 '\n'
Step6:我们已经成功爬取了250部电影的5个特征,创建一个数据框并看看结构。
movies_df <- data.frame(
Rank=rank_data,
Title=title_data,
Score=score_data,
Di=di_data)
movies_df
得到下列数据框
将数据框数据写入Excel
现在2017年上映的最流行的250部故事片在豆瓣网上的数据已经爬取成功了!
我们可以利用这些数据进行一些分析
下一节会进行词云图分析
基于R语言revest包的网络爬虫对豆瓣网TOP250的电影特征的抓取相关推荐
- python爬虫设计模式_Python3网络爬虫(一):利用urllib进行简单的网页抓取
点击蓝色字免费订阅,每天收到这样的好信息 前言:最近有不少粉丝关注本公众号.并且我已经成功开通了流量主同时会赚一点点广告费,我打算每个月把这部分钱拿出来给大家买点书刊,算是给大家一点福利吧.大家想买什 ...
- Python3网络爬虫(一):利用urllib进行简单的网页抓取
运行平台:Windows Python版本:Python3.x IDE:Sublime text3 转载请注明作者和出处:http://blog.csdn.net/c406495762/article ...
- 网络爬虫初步:从一个入口链接开始不断抓取页面中的网址并入库
前言: 在上一篇<网络爬虫初步:从访问网页到数据解析>中,我们讨论了如何爬取网页,对爬取的网页进行解析,以及访问被拒绝的网站.在这一篇博客中,我们可以来了解一下拿到解析的数据可以做的事件. ...
- python外国网站爬虫_Python3网络爬虫(一):利用urllib进行简单的网页抓取
一.预备知识 1.Python3.x基础知识学习: 可以在通过如下方式进行学习: (1)廖雪峰Python3教程(文档): (2)菜鸟教程Python3教程(文档): (3)鱼C工作室Python教程 ...
- 网络爬虫,淘宝API商品详情测试(抓取详情数据)
网络爬虫是通过什么方式来寻找网络上的信息的呢 通俗来讲,网络蜘蛛是通过网页的链接地址来寻找网页的.从网站某一个页面(通常是首页)开始,读取网页的内容,找到在网页中的其它链接地址,然后通过这些链接地址寻 ...
- Python3网络爬虫:腾讯新闻App的广告数据抓取
废话就不说了,咱们直接上代码 def startGetData(self):index = 0while index < 3:index = index + 1self.url = " ...
- 基于R语言quantmod()包金融数据分析
文章目录 数据结构 读取数据 在线获取 其他方式获取 分析类函数 is族函数 has族函数:检测数据是否包含某类型数据 列名函数 计算函数 数据结构 读取数据 在线获取 setSymbolLookup ...
- Python3网络爬虫:今日头条新闻App的广告数据抓取
咱们就不说废话了,直接上完整的源码 def startGetData(self):ret = random.randint(2, 10)index = 0 url = "" whi ...
- R语言raster包计算多个栅格图像平均值、标准差的方法
本文介绍基于R语言中的raster包,批量读取多张栅格图像,对多个栅格图像计算平均值.标准差,并将所得新的栅格结果图像保存的方法. 在文章R语言raster包批量读取单一或大量栅格图像(htt ...
最新文章
- CPU消耗,跟踪定位理论与实践
- JDBC Driver常用连接方法列表
- 图像的均值和方差python_python-绘制均值和标准差
- 【Flutter】顶部导航栏实现 ( Scaffold | DefaultTabController | TabBar | Tab | TabBarView )
- 云原生五大趋势预测,K8s 安卓化位列其一
- Redux 一个还好的redux 实践吧
- Leetcode题库191.位1的个数(C实现)
- Unity 新手入门 如何理解协程 IEnumerator yield
- 到底什么成就了今天的人工智能?(上)
- springmvc接收日期字段处理方式
- SSM整合(相关jar包需求)
- python取消任务的方法_python里取消一个未曾执行的任务
- css----苹果移动端以及小程序滚动模块卡顿的处理
- Notepad2 巧妙替换回车换行符
- 计算机图标制作教程,电脑主题ICO图标制作方法 详细教程你一学就会
- 西部数据移动硬盘真伪测试软件,我的西数硬盘是真的吗?网购西数移动硬盘辨别真伪的方法...
- sniffer超级详细介绍
- [2018国家集训队][UOJ449] 喂鸽子 [dp+组合数学]
- 微信小程序学习3(wxss)
- GUI(Graphical User Interface)