R语言爬虫-高评分图书(豆瓣)

# R语言爬虫-高评分图书(豆瓣)

本篇文章依然延续之前的爬虫类型文章,多次实操有助于对于代码的理解和技术的提升。此次爬取的是豆瓣上高评分的图书,每一次爬取都会给大家提供一份有价值、有意义的东西 ,每一次都有所提升,我是ERIC,希望喜欢这方面技术的或者对于发表的内容感兴趣都可以相互交流,共同提升。 (此篇爬虫数据采集后只进行了简单的可视化分析,未进行深度分析)

小编喜欢这些书籍里面最耀眼的那个书籍标签

为你,千千万万遍。

你呢?你喜欢的一本书的经典语录/标签是什么?

小编此次获取的是豆瓣里面排行前250名的书籍,可以都说是经典,虽然评分、评价略有不同,但都是值得细细品味的。

#下载包的时候注意下镜像归属,可能会导致包的下载失败、加载失败(可设置包的存储路径,否则软件默认的包存储路径为C盘,会影响你一些功能的使用)

注意了,注意了 ,从这里就开始了哈!这次用到下面这些大包小包的,想学的多查查多看看哈

install.packages("RCurl")
install.packages("XML")
install.packages("parallel")
install.packages("stringr")
install.packages("ggplot2")
install.packages("dplyr")
#包的加载
library(parallel)
library(ggplot2)

t<-0#这个你看吧不懂的话,你还是先回去看看书嘛,先用for循环写写看看

由于本次爬虫采用的是多线程计算(并行计算),所以需要构造相应的函数

#构造数据爬取函数,哦,对了,为什么要把加载包放在函数里面,这是因为后面的函数要求的,不怪我

books<-function(t){library(RCurl)library(stringr)library(XML)

#HTTP响应回传信息(响应时间、连接时间、表头或者代理服务器是否设置成功)收集,在请求网址失败时可查找相关原因
  dg<-debugGatherer()

#设置header参数,伪装身份、浏览器

  mheader<-c("User-Agent"="Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36","Accept"="texthtml,applicationxhtml+xml,applicationxml;q=0.9,;q=0.8","Accept-Language"="en-us","Connection"="keep-alive","Accept-Charset"="GB2312,utf-8;q=0.7,;q=0.7")

#pbar<-tkProgressBar(title="进度",label="主人,我已完成%",min=0,max=100,initial=0,width=300)#这个是一个时时查看爬取进度的,小编这次没有用哈

#返回我们设置的表头headers信息,以便确认伪装是否成功

cat(dg$value()[3])

#爬取网址构造(批量爬取网页)

topurl<-"https://book.douban.com/top250?start="tcurl<-str_c(topurl,t*25,sep="")

#利用R爬虫中的RCurl包进行数据爬取,利用请求函数getURL请求网页获得网页信息

 topbook<-getURL(tcurl,httpheader=mheader,debugfunction=dg$update,verbose=TRUE)

#解析网页,整理网页树结构

acbook<-htmlParse(topbook,encoding ="UTF-8")

#XML包中的xpathSApply函数数据抓取函数抓取所需要的数据,当然,首先你必须要去查阅该函数的一个用法,其次你需要去学习爬虫必备知识,HTML(超文本标记语言),至少需要了解网页的树形结构、基本的标签语法、网页中节点的相关知识。

#获取书籍的名字tname<-xpathSApply(acbook,"//*/div[@class='pl2']/a[1]",xmlValue)tfname<-str_trim(str_replace_all(tname,"[:space:]",""))#书籍别名获取#alias<-xpathSApply(acbook,"//*/div[@class='pl2']/span",xmlValue)if(length(alias)==25){alias}else{ladd<-vector(mode="character",length=25-length( alias))alias_1<-append(alias,ladd,after=length(alias))alias<- alias_1}#书籍网址获取(豆瓣)tlink<-xpathSApply(acbook,"//*/a[@class='nbg']",xmlAttrs,'href')tlink_1<-tlink[2,]

#书籍封面图片获取timg<-xpathSApply(acbook,"//*/a[@class='nbg']/img",xmlGetAttr,'src')#书籍作者获取tauthor<-xpathSApply(acbook,"//*/p[@class='pl']",xmlValue)tfauthor<-str_split_fixed(tauthor,"/",5)[,1]#书籍评论数ratnum<-xpathSApply(acbook,"//*/div[@class='star clearfix']/span[@class='pl']",xmlValue)fratnum<-str_trim(str_replace_all(str_split_fixed(ratnum," ",4)[,4],"[:punct:]",""))#书籍豆瓣评分ratg<-xpathSApply(acbook,"//*/div[@class='star clearfix']/span[@class='rating_nums']",xmlValue)tag<-xpathSApply(acbook,"//*/p[@class='quote']/span[@class='inq']",xmlValue)if(length(tag)==25){tag}else{addnum<-vector(mode="character",length=25-length(tag))tag_1<-append(tag,addnum,after=length(tag))tag<-tag_1}#合并数据data.frame(tfname,tfauthor,tag,ratg,fratnum,tlink_1,timg)#Sys.sleep(2) (访问时间长、频次高时要加入系统休眠间隔,不然很容易被封)
}

#多线程计算(并行计算),利用parallel中的parLapply函数,该函数前身为Lapply,多线程计算首先要看看你的电脑是多少核的,采用适当的线程计算,过多过少都不合适,影响计算效率,一般非程序员、大数据处理的,电脑都是4核。

另外,本文之所以采用多线程很明显提升了计算效率,采用for或者foreach循环效率是非常低的,小编在之前已经尝试过很多次了,而现在的这个时间大幅降低。当然parapllel包的并行计算效率不算是比较高的,也还有其他的包SupR、H2O、Rmpi等

这个时间可以说相对来说很短了,小编的电脑是4核的,之前用for循环运行的时候就不说了,苦不堪言,特别是在之前几万的数据量时。
m<-0:9

#可得出计算耗费时间

system.time({m<-0:9cl<-makeCluster(4) # 初始化四核心集群bdata<-parLapply(cl,m,tbook) res.df <-do.call('rbind',bdata) # 记得关闭集群stopCluster(cl)
})
#作者出版书籍数量分析
ratio<-(author_num$Freq/250)*100
author_num<-data.frame(id,table(res.df$tfauthor),ratio)
id<-1:27#绘图id<-1:179
authorsat<-data.frame(table(bookdata$tfauthor))
ratio<-((authorsat$Freq)/250)*100
authorsat<-data.frame(id,authorsat,ratio)

#运用dplyr中的arrange函数对其进行排序
asort<-arrange(authorsat,desc(Freq))

#此处需要用到ggplot2包中的函数,想要学好ggplot函数需要花大量功夫,基础的画图需求,可自行查阅资料

出版书籍排名前20的作者图,其中村上春树出版的书籍最多,也从中看出他的书籍是十分受读者喜爱的,同时也是特别有影响力的人、有价值的书籍,小编也推荐大家去读读他的书,升华下自我,哈哈哈哈哈,实在看不下去不勉强哈,莫搞得打瞌睡不好的,小编推荐他的

《追风筝的人》

ggplot(authorsat[1:20,], aes(x=Var1,y=Freq,fill=Var1))+geom_bar(stat="identity",aes(reorder(Var1,-Freq)))+labs(title = "作者书籍数量分布")+xlab("") + ylab("")+theme(panel.background=element_rect(fill='transparent',color ="gray"),axis.text.x = element_text(angle = 70, hjust = 0.5,vjust = 0.5,color = "black",size=9),plot.title = element_text(hjust = 0.5))+geom_text(mapping = aes(label=Freq),size=3,vjust=0.8)

ggplot(data=pingfen, aes(x=level,y=ratgrade))+geom_boxplot(aes(fill=level))p+xlab("图书评分等级:s1(8-8.5);s2(8.5-9);s3(9+)") + ylab("图书评分")+labs(title="图书评分分布(不同评分段)")+ theme(plot.title = element_text(hjust = 0.5))

大部分书籍评分都在8.5~9.0,评分9.0以上的书籍比较少,但是也是精华中的精华啊,值得瞅一瞅

此处放出部分图书的信息,喜欢的修行人可联系小编获取此文章爬取的书籍信息

下载的部分书籍封面图片

联系小编哦

若有需要豆瓣图书TOP250名单,可关注博主个人公众号

奉节脐橙性凉,味甘酸,归肺、脾、胃经;具有生津开胃、止呕、清肠、保护血管的功效。

奉节脐橙中富含维C和维P以及胡萝卜素,可以抑制致癌物质的形成,还能软化和保护血管,促进血液循环,降低胆固醇和血脂;维生素P可以有效防止维C被破坏。盐蒸橙子是化痰止咳良药。橙皮里有两种成分具有止咳化痰的功效,一个是那可汀,一个是橙皮油。这两种成分,只有在蒸煮之后才会从橙皮中出来,所以咳嗽有痰的时候,不妨蒸个橙子试试

https://weidian.com/?userid=1267683370

R语言RCurl爬虫(多线程爬虫)-高评分豆瓣图书相关推荐

  1. R语言期末复习资料----助力高绩点

    多元统计分析及R语言建模(第四版) R语言期末复习资料 第一章 多元统计分析概述 1.列出常用的统计软件,说明其使用范围和各自的优缺点 解: (1)SAS:组合软件系统,入门比较困难 (2)SPSS: ...

  2. R语言基于Matching包进行倾向评分匹配(PSM)

    倾向评分匹配(Propensity Score Matching,简称PSM)是一种统计学方法,用于处理观察研究(Observational Study)的数据,在SCI文章中应用非常广泛.在观察研究 ...

  3. python获取网站代码_python爬虫1——获取网站源代码(豆瓣图书top250信息)

    # -*- coding: utf-8 -*- import requests import re import sys reload(sys) sys.setdefaultencoding('utf ...

  4. 基于Requests的Python爬虫入门实例------爬取豆瓣图书排行榜的前25本图书(小白福利)

    话不多说,先上代码: # -*- coding:utf-8 -*- import sys import requests import lxml from bs4 import BeautifulSo ...

  5. python爬虫1——获取网站源代码(豆瓣图书top250信息)

    # -*- coding: utf-8 -*- import requests import re import sys reload(sys) sys.setdefaultencoding('utf ...

  6. R语言rcurl抓取问财财经搜索网页股票数据

    问财财经搜索是同花顺旗下的服务之一,主要针对上市公司的公告.研报.即时新闻等提供搜索及参考资料.相对于其他股票软件来说,一个强大之处在于用自然语言就可以按你指定的条件进行筛选.而大部分现有的行情软件支 ...

  7. R语言 1:2 1:n 倾向性评分匹配法PSM 一个病例多个对照 MatchIt包

    1:2 /1:N 倾向性评分匹配法PSM, 条件Logistic回归 MatchIt包进行倾向性评分匹配法(Propensity Score Matching, PSM)主要是1:N匹配.一个病例对应 ...

  8. 【python爬虫专项(7)】爬虫实战项目一( 豆瓣图书类别的书籍信息数据获取——爬虫逻辑1)

    任意一图书类别的书籍信息数据 参考网址:豆瓣读书网 爬虫逻辑:[分页网页url采集]-[数据信息网页url采集]-[数据采集] 针对爬虫逻辑的三步走,采用函数式编程的方式进行数据爬取 函数1: get ...

  9. java爬虫爬豆瓣图书,十一. 爬虫实战(Xpath)- 豆瓣图书TOP250的数据

    爬取网址:https://book.douban.com/top250 爬取信息:书名.书名链接,评价.评价人数.一句话点评 爬书名时,直接复制xpath会遇到一个坑. 这是由于chrome.Fire ...

最新文章

  1. 云计算和大数据时代网络技术揭秘(八)数据中心存储FCoE
  2. 传智播客C/C++各种开发环境搭建视频工具文档免费教程
  3. java异步执行任务
  4. Python基础——PyCharm版本——第八章、文件I/O(核心3、csv和excel解析)
  5. 7-1 数组元素循环右移问题 (20 分)
  6. 测试ODBC与OLE
  7. 移动音视频SDK工程实践之数据采集和处理
  8. 三种方式让你轻松监控 EntityFramework 中的 sql 流转
  9. 你对求生欲,一无所知!| 今日最佳
  10. java memorystream 包_存储在MemoryStream中的裁剪图像中心
  11. python 消息中间件_如何评价腾讯开源的消息中间件TubeMQ?
  12. Linux程序包rpm、yum、apt-get
  13. 毕业设计之 --- 基于java web的旅游网站设计
  14. zoj1479 dweep soj1106 搜索
  15. 《国富论》亚当-斯密 - 阅读思考和笔记
  16. 【回归预测-ELM预测】基于遗传算法优化极限学习机实现风电数据回归预测附matlab代码
  17. 华为云 CentOS 镜像源配置
  18. 交大网院计算机第五次作业答案,2015交大网院计算机第三次作业word操作题
  19. 贷款计算公式——java实现
  20. 华为服务器bmc怎么传文件,华为服务器bmc配置

热门文章

  1. android设置水平布局,Android布局左右对齐在水平布局
  2. nginx html伪静态文件,nginx伪静态排除指定目录伪静态规则设置
  3. 软考(软件设计师知识点) --多媒体基础
  4. 大前端技术讲座_一些好的技术讲座
  5. 创业公司如何高效的进行产品研发管理
  6. Java NIO及其常用API
  7. Vue Router 命名路由、(嵌套)命名视图
  8. 用excel来做动态图表
  9. System.IO.FileSystemWatcher的坑
  10. 百度手机卫士,简单粗暴至极(关于Stagefright高危漏洞)