R网页采集:解决网页分页与网址超链接问题

栏目: R语言 · 发布时间: 5年前

R网页采集:解决网页分页与网址超链接问题

作者: 郑连虎 ,在数学学院取得理学学位的文科生,中国人民大学硕博连读生在读,山东大学管理学学士、理学学士

个人公众号:阿虎定量笔记

全文注释

# 本期以爬取猫眼电影为例,演示在R语言网页爬虫实践中, 分页网址与网址链接 的处理。

# 初次使用R语言做网页爬虫任务,请阅读我的另外两篇推送: “rvest包爬虫入门”“R语言正则表达式” ,了解HTML标记语言、CSS层叠样式表、JavaScript脚本语言及正则表达式等背景知识,同时先练习使用R语言爬取豆瓣电影。

# 我们将借助谷歌浏览器插件 SelectorGadget 帮我们提取字段的标签属性。你可以在谷歌浏览器中免费获取该插件,其使用方法十分简单:打开网页,点击SelectorGadget,点选你需要的内容(标黄)并点掉不需要的内容(标红),那么需要提取的字段,其标签属性就自动显示供你复制到代码中,这比浏览网页源代码的方法高效许多;例如,借助SelectorGadget提取电影上映时间字段的标签属性:

R网页采集:解决网页分页与网址超链接问题

# 完整代码的R文件,我在留言区给出下载地址。

任务

1 爬取猫眼电影网站上电影的上映时间

2 保存数据在本地

难点

1 分页形式,需要写循环语句批量爬取

R网页采集:解决网页分页与网址超链接问题

2 上映时间需要点开网页链接才能看到,且包含汉语字符

R网页采集:解决网页分页与网址超链接问题

代码

1 第一步,观察分页的网址规律,获取网址链接:

R网页采集:解决网页分页与网址超链接问题

# 设置工作目录

setwd('D:/')

# 加载所需程序包

library('rvest')

library('stringr')

# 观察网址规律用for循环语句批量爬取数据

index <- c(0,30,60,90,120,150,180,210,240,270)

URL <- data.frame()

for (i in 1:length(index)){

   web <- read_html(str_c(' http://maoyan.com/films?showType=2&offset= ',index[i]))

# 爬取超链接网址

link <- web%>%html_nodes('.movie-item-title a')%>%html_attrs()

url <- c(1:length(link))

for(i in 1:length(link))

url[i]<-link[[i]][1]

# 创建数据框存储以上信息

URL_data <- data.frame(url)

URL <- rbind(URL,URL_data)

}

URL

2 第二步,爬取信息并清洗保存:

R网页采集:解决网页分页与网址超链接问题

# 抓取电影信息

movies <- data.frame()

for (i in 1:length(URL$url)){

pages <- read_html(str_c(' http://maoyan.com ',URL$url[i]))

# 爬取电影名

title <- pages%>%html_nodes('.movie-brief-container .name')%>%html_text()

# 爬取电影上映时间

time <- pages%>%html_nodes('.ellipsis~ .ellipsis+ .ellipsis')%>%html_text()

# 创建数据框存储以上信息

movies_data <- data.frame(title,time)

movies <- rbind(movies,movies_data)

}

movies

# 删除无关字符

movies$time <- str_replace_all(movies$time,'大陆上映','')

movies$time <- str_replace_all(movies$time,'大陆重映','')

# 把时间数据转换为日期格式

movies$time <- as.Date(movies$time)

# 导出为CSV文件

write.csv (movies,file="D:/movies.csv",row.names=FALSE)

——————————————

往期精彩:

R网页采集:解决网页分页与网址超链接问题 天善智能 清华教授团队亲自授课,打造人人都能上手的 Python 课程 小程序

R网页采集:解决网页分页与网址超链接问题

本文由R语言中文社区 创作,采用 知识共享署名-相同方式共享 3.0 中国大陆许可协议 进行许可。

转载、引用前需联系作者,并署名作者且注明文章出处。

本站文章版权归原作者及原出处所有 。内容为作者个人观点, 并不代表本站赞同其观点和对其真实性负责。本站是一个个人学习交流的平台,并不用于任何商业目的,如果有任何问题,请及时联系我们,我们将根据著作权人的要求,立即更正或者删除有关内容。本站拥有对此声明的最终解释权。


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

一站式学习C编程

一站式学习C编程

宋劲杉 / 电子工业出版社 / 2011-3 / 59.00元

《一站式学习c编程》有两条线索,一条线索是以linux平台为载体全面深入地介绍c语言的语法和程序的工作原理,另一条线索是介绍程序设计的基本思想和开发调试方法。本书分为两部分:第一部分讲解编程语言和程序设计的基本思想方法,让读者从概念上认识c语言;第二部分结合操作系统和体系结构的知识讲解程序的工作原理,让读者从本质上认识c语言。 《一站式学习c编程》适合做零基础的初学者学习c语言的第一本教材,......一起来看看 《一站式学习C编程》 这本书的介绍吧!

HTML 编码/解码
HTML 编码/解码

HTML 编码/解码

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具