内容概括:用R中的rvest包爬取豆瓣top250图书的基本信息(包括书名、评分、作者、译者、出版社、出版时间已经价格),然后根据出版社和出版时间进行进一步的分析
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]