用rvest包爬取豆瓣图书数据
来源:互联网 发布:8管脚单片机 编辑:程序博客网 时间:2024/05/22 15:17
内容概括:用R中的rvest包爬取豆瓣top图书的基本信息(包括书名、评分、作者、译者、出版社、出版时间已经价格),然后根据出版社和出版时间进行进一步的分析
R代码:
#加载所需的包
library("rvest");
library("dplyr");
library("stringr");
#批量爬取豆瓣图书top250数据
ind <-c(0,25,50,75,100,125,150,175,200,225)
book_inf <-data.frame()
#使用for循环进行批量数据爬取(发现url的规律,写for循环语句)
for (i in1:length(ind)){
web<-read_html(str_c("https://book.douban.com/top250?start=",ind[i]),encoding="UTF-8")
#爬取图书的作者、出版社、出版时间、价格
p <-web%>%html_nodes("p.pl")%>%html_text()
#爬取图书的name
q <-web%>%html_nodes(".pl2 a")%>%html_text()
#爬取图书的rate
r <- web%>%html_nodes(".rating_nums")%>%html_text()
#消除q中的空格
q <-str_replace_all(q," ","")
q <-str_replace_all(q,"\n","")
#赋值图书书名和评分
name <- q
rate <- r
#对p进行处理
#提取作者名字
p1 <-str_split_fixed(p,"/",2)
author <- p1[,1];
#提取翻译者名字
p2 <-str_split_fixed(p1[,2],"/",2)
a <-str_detect(p2[,1],"出版")
b <- str_detect(p2[,1],"书店")
interpre <-p2[,1]
interpre[a|b] <-"NA"
#提取出版商
p3 <-str_split_fixed(p2[,2],"/",2)
publisher <-p3[,1]
publisher[a] <-p2[a,1]
publisher[b] <-p2[b,1]
#提取出版时间
p4 <-str_split_fixed(p3[,2],"/",2)
publish_time <-p4[,1]
publish_time[a]<- p3[a,1]
publish_time[b]<- p3[b,1]
publish_time <- str_replace(publish_time,"年","-")
publish_time <- str_replace(publish_time,"月","-")
#提取价格
p5 <-str_split_fixed(p4[,2],"/",2)
price <- p5[,1]
price[a] <-p4[a,1]
price[b] <-p4[b,1]
#创建数据框存储以上信息
book <-data_frame(name,rate,author,interpre,publisher,publish_time,price)
book_inf <-rbind(book_inf,book)
}
#对于少数不合规则的数据进行处理
book_inf[52,5:7]<- book_inf[52,4:6]
book_inf[52,4] <-"NA"
book_inf[136,5:7]<- book_inf[136,4:6]
book_inf[136,4]<- "NA"
#根据出版社进行分析
a <-summarise(group_by(book_inf,publisher),count = n())
arrange(a,desc(count))
#根据出版时间进行分析
b<-str_split_fixed(book_inf$publish_time,"-",2)
b <- b[,1]
table(b)
分析:
- 根据图书出版的出版社进行分析,希望得到哪些出版社更容易出版好书
由于出版社有80个,因此,此处只截取出版好书数量大于等于5本的出版社进行分析
出版社
好书数量
占250本书的比例
1
人民文学出版社
29
11.6%
2
上海译文出版社
23
9.2%
3
南海出版公司
22
8.8%
4
长江文艺出版社
13
5.2%
5
译林出版社
9
3.6%
6
中国友谊出版公司
9
3.6%
7
作家出版社
9
3.6%
8
北京十月文艺出版社
8
3.2%
9
生活·读书·新知三联书店
8
3.2%
10
春风文艺出版社
5
2.0%
11
新世界出版社
5
2.0%
- 根据图书出版时间进行分析,希望得到好书出版时间的规律:从图中可以看出,2007年出版的好书最多,且1997年至2011年,出版的好书都高于平均值(8本),除了2006年。
- 用rvest包爬取豆瓣图书数据
- 如何用rvest包爬取豆瓣图书250的数据
- 豆瓣图书 数据分析
- rvest爬取链家网数据
- 用R批量下载豆瓣top250图书
- 图书展示APP 数据接口调用豆瓣的数据
- 用Rvest包再爬拉勾网
- R学习:用rvest包爬取imdb网站电影信息
- python 实现用ISBN从豆瓣获取图书信息
- 豆瓣图书查询升级版“扫扫图书”
- Android豆瓣图书查询Demo
- 豆瓣API用户图书收藏
- Android豆瓣图书查询Demo
- PHP 抓取豆瓣图书信息
- 豆瓣图书搜索系统实验
- 仿豆瓣图书商城Jsonp
- python爬取豆瓣图书
- vue的简易豆瓣图书
- Bottom Sheet的使用和BottomSheetDialogFragment的封装
- 详解java定时任务
- 关于open函数,一个很容易出错的问题
- 技术博客003
- 112. Path Sum
- 用rvest包爬取豆瓣图书数据
- Activity的launchMode介绍
- matlab 全局最优算法 GlobalSearch
- 郁闷!ionic中获取ng-model绑定的值为undefined如何解决
- java——与c++之不同——其他
- No mapping found for HTTP request with URI
- hdu5972 快速匹配bitset优化(shiftand算法)2016ACM/ICPC亚洲区大连站
- 更快的方式实现PHP数组去重(转)
- android 隐藏状态栏