R语言-Kindle特价书爬榜示例 & 输出HTML小技巧

自从买了kindle以后,总是想要定期刷有没有便宜的书,amazon经常有些1元/2元的书打特价,但是每次都去刷那些榜单太麻烦了,而且榜单又不能按照价格排名,捞书有点累

所以自己用R语言的rvest包简单写了一个小程序,让它自动按照不同价格区间把特价书给分出来。

主要看的是kindle新品排行榜和最快畅销榜。

销售爬升最快榜: http://www.amazon.cn/gp/movers-and-shakers/digital-text/

新品榜: http://www.amazon.cn/gp/new-releases/digital-text/

不在博客园上阅读时才会看到的,这篇博文归http://www.cnblogs.com/weibaar 所有

仅保证在博客园博客上的排版干净利索还有代码块与图片正确显示,他站请保留作者信息尊重版权啊

需要预先安装data.table / dplyr / rvest包。

主要分享点是:

1、Rvest的简单应用实例
2、如何把数据框(data.frame or table) 输出为html文件,即添加html脚本的方法

 1 library(rvest)
 2 library(data.table)
 3 library(dplyr)
 4 #这里是导入网址。研究一下amazon的顺序,直接导入就好
 5 id<-1:5
 6 url_increase_fast<-paste0(
 7         "http://www.amazon.cn/gp/movers-and-shakers/digital-text/ref=zg_bsms_digital-text_pg_",
 8         id,
 9         "?ie=UTF8&pg=",
10         id)
11 url_newest<-paste0(
12         "http://www.amazon.cn/gp/new-releases/digital-text/ref=zg_bsnr_digital-text_pg_",
13         id,
14         "?ie=UTF8&pg=",
15         id)
16 url<-c(url_increase_fast,url_newest)
17 #这里编写readdata函数,读取网页内容。里面有些不常用的字段,为了最后导出效果好看,我没全部都导。
18 #有额外需要的可以自己改编,譬如分类啊,好评率啊等等。对我来说,知道价格、书名就够了
19 readdata<-function(i){
20         web<-html(url[i],encoding="UTF-8")
21         title<-web %>% html_nodes("div.zg_title") %>% html_text()
22         title_short<-substr(title,1,20)
23         price<-as.numeric(gsub("¥ ","",web %>% html_nodes("span.price") %>% html_text()))
24         ranking_movement<-web %>% html_nodes("span.zg_salesMovement") %>% html_text()
25         rank_number<-as.numeric(gsub("\\.","",web %>% html_nodes("span.zg_rankNumber") %>% html_text()))
26         #新书榜里没有销售变动记录,所以记为NA
27         if (length(ranking_movement)==0) {ranking_movement=rep(NA,20)
28                                           rank_number=rep(NA,20)}
29         link<-gsub("\\\n","",web %>% html_nodes("div.zg_title a") %>% html_attr("href"))
30         ASIN<-sapply(strsplit(link,split = "/dp/"),function(e)e[2])
31         img<-web %>% html_nodes("div.zg_itemImage_normal img")  %>% html_attr("src")
32         #这里加上html代码
33         img_link<-paste0("<img src=‘",img,"‘>")
34         title_link<-paste0("<a href=‘",link,"‘>",title_short,"</a>")
35         #合并数据
36         combine<-data.table(img_link,title_link,price,ranking_movement)
37         setnames(combine,c("图像","书名","价格","销售变动"))
38         #以防被封IP,设为5秒跑一次数据。
39         Sys.sleep(5)
40         combine
41 }
42
43 #做一个循坏开始跑数
44 final<-data.table()
45 for (i in 1:10){
46         final<-rbind(final,readdata(i))
47         print(i)
48 }
49
50 #这里编写一个函数,把data.table转化为html_table#要点请查看w3school,table页,以<table>开始,表头是<th>,行与行之间是<tr>#主要就是sapply, apply,paste的应用啦……就是把数据框先加<td>,再加<tr>,最后外面套一层<table>
51 transfer_html_table<-function(rawdata){
52         title<-paste0("<th>",names(rawdata),"</th>")
53         content<-sapply(rawdata,function(e)paste0("<td>",e,"</td>"))
54         content<-apply(content,1,function(e) paste0(e,collapse = ""))
55         content<-paste0("<tr>",content,"</tr>")
56         bbb<-c("<table border=1><tr>",title,"</tr>",content,"</table>")
57         bbb
58 }
59 #这里应用transfer_html_table函数,把榜单输出为html表格
60 final_less1<-transfer_html_table(rawdata=final %>% filter(价格<=1))
61 write(final_less1,"~//Kindle-低于1元特价书.html")
62
63
64 final_1_2<-transfer_html_table(rawdata=final %>% filter(价格>1 & 价格<=2))
65 write(final_1_2,"~//Kindle_1-2元特价书.html")
66
67 final_2_5<-transfer_html_table(rawdata=final %>% filter(价格>2 & 价格<=5))
68 write(final_2_5,"~//Kindle_2-5元特价书.html")

最后在我的文档("~//"表示定位到我的文档那里)会找到三个HTML文件,打开来,大概长下面这个样子,于是就可以很愉悦得选书了。Kindle时不时会把一些好书1元贱卖的~~所以有了kindle经常手贱,有这个小脚本之后我觉得我会更加手贱买书了。。。

如果大家有兴趣,还可以去搜一下R语言批处理、自动运行等文章来看,把这个代码设为定期跑一下,然后让结果能够累计保存。那么以后就知道kindle商城在什么时候调价最多了。 amazon还是比较容易爬虫的,它html页面内代码很规范整洁,除了在产品详情页里,产品描述(product description)总是被脚本保护起来,比较难爬。

不在博客园上阅读时才会看到的,这篇博文归http://www.cnblogs.com/weibaar 所有

仅保证在博客园博客上的排版干净利索还有代码块与图片正确显示,他站请保留作者信息尊重版权啊

以及最近开始学python了!

大牛分享了一个很好用的python IDE,叫做ANACONDA,里面那个spyder的IDE真的做的很棒~~跟rstudio有的一拼~ 而且ANACONDA集成了python 2.7,都不用单独下python了~~

然后github上有两个教程写的还蛮不错的

1、 python入门

https://github.com/qiwsir/StarterLearningPython

2、python爬虫101个示例(基于python 3)

https://github.com/compjour/search-script-scrape

时间: 2024-12-05 19:04:41

R语言-Kindle特价书爬榜示例 & 输出HTML小技巧的相关文章

R语言-Kindle特价书爬榜示例 &amp; 输出HTML小技巧(转)

自从买了kindle以后,总是想要定期刷有没有便宜的书,amazon经常有些1元/2元的书打特价,但是每次都去刷那些榜单太麻烦了,而且榜单又不能按照价格排名,捞书有点累 所以自己用R语言的rvest包简单写了一个小程序,让它自动按照不同价格区间把特价书给分出来. 主要看的是kindle新品排行榜和最快畅销榜. 销售爬升最快榜: http://www.amazon.cn/gp/movers-and-shakers/digital-text/ 新品榜: http://www.amazon.cn/gp

C语言打印输出,scanf使用注意事项,小技巧

 今天看一帖子,赵忠大哥的回复挺经典也很有用,记录下来! 1.在每个最后不带\n的printf后面加fflush(stdout); 2.在每个不想受接收缓冲区旧内容影响的scanf前面加rewind(stdin);另外请检查scanf的返回值. 3.在占用内存空间较大的局部数组声明的前面加static将其从堆栈数据段挪到全局数据段即可避开因局部数组大小超过默认堆栈大小1MB造成程序不能正常运行的问题. C语言打印输出,scanf使用注意事项,小技巧

R语言进行文件夹操作示例(转)

rm(list=ls())path = 'J:/lab/EX29 --在R语言中进行文件(夹)操作'setwd(path)cat("file A\n", file="A") #创建一个文件A,文件内容是'file A','\n'表示换行,这是一个很好的习惯cat("file B\n", file="B")  #创建一个文件Bfile.append("A", "B")  #将文件B的内容附

【R语言系列】作图入门示例一

假设有如下数据,我们使用plot函数作图 月龄 体重 月龄 体重  1 4.4 9 7.3 3 5.3 3 6.0 5 7.2 9 10.4 2 5.2 12 10.2 11 8.5 3 6.1 R语言中默认函数 abs   绝对值 sqrt   平方根 exp  e^x次方 log   自然对数 log2 log10  其他对数 sin  cos tan 三角函数 sinh cosh tanh  双曲函数 poly  正交多项式 polyroot  多项式求根 assign   赋值操作 等同

R语言重要数据集分析研究——&#160; 数据集本身的分析技巧

数据集本身的分析技巧           作者:王立敏           文章来源:网络 1.数据集 数据集,又称为资料集.数据集合或资料集合,是一种由数据所组成的集合. Data set(或dataset)是一个数据的集合,通常以表格形式出现.每一列代表一个特定变量.每一行都对应于某一成员的数据集的问题.它列出的价值观为每一个变量,如身高和体重的一个物体或价值的随机数.每个数值被称为数据资料.对应于行数,该数据集的数据可能包括一个或多个成员. 2.数据分析 数据结构 创建向量和矩阵 函数c(

R语言:用简单的文本处理方法优化我们的读书体验

前言 延续之前的用R语言读琅琊榜小说,继续讲一下利用R语言做一些简单的文本处理.分词的事情.其实就是继续讲一下用R语言读书的事情啦,讲讲怎么用它里面简单的文本处理方法,来优化我们的读书体验,如果读邮件和读代码也算阅读的话..用的代码超级简单,不涉及其他包 这里讲两个示例,结尾再来吐槽和总结. 1)R-Blogger订阅邮件拆分 2) R代码库快速阅读方法 不在博客园上阅读时才会看到的,这篇博文归 http://www.cnblogs.com/weibaar所有 仅保证在博客园博客上的排版干净利索

R语言中文社区历史文章整理(类型篇)

R语言中文社区历史文章整理(类型篇) R包: R语言交互式绘制杭州市地图:leafletCN包简介 clickpaste包介绍 igraph包快速上手 jiebaR,从入门到喜欢 Catterplots包,让你绘制不一样的图 今天再来谈谈REmap包 ggplot2你需要知道的都在这... R访问数据库管理系统(通过RODBC包和RMySQL包两种方式) NLP--自然语言处理(三)text2vec包 Rattle:数据挖掘的界面化操作 借助caret包实现特征选择的工作 R语言的高质量图形渲染

第二篇:R语言数据可视化之数据塑形技术

前言 绘制统计图形时,半数以上的时间会花在调用绘图命令之前的数据塑型操作上.因为在把数据送进绘图函数前,还得将数据框转换为适当格式才行. 本文将给出使用R语言进行数据塑型的一些基本的技巧,更多技术细节推荐参考<R语言核心手册>. 数据框塑型 1. 创建数据框 - data.frame() # 创建向量p p = c("A", "B", "C") # 创建向量q q = 1:3 # 创建数据框:含p/q两列 dat = data.fra

Windows7-32位系统下R语言链接mySQL数据库步骤

安装R和MySQL在此就不再多说了,网上有很多教程可以找到.下面直接进入到odbc的安装流程. 1.下载安装mysql-connector-odbc-5.x.x-win32.msi 下载地址:http://dev.mysql.com/downloads/connector/odbc/可下载最新版本 但在安装过程中遇到以下问题(经测试win10-64位版本下安装mysql-connector-odbc-5.3.6-winx64.msi不会出现该问题): Error 1918. Error inst