日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 前端技术 > HTML >内容正文

HTML

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

發(fā)布時(shí)間:2023/11/29 HTML 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 R语言-Kindle特价书爬榜示例 输出HTML小技巧 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

20170209更新:

根據(jù)回復(fù)提示,rvest包更新,原用函數(shù)html作廢,需改用read_html

并后續(xù)amazon網(wǎng)頁(yè)改版等

因此此文章代碼失效!各位可看評(píng)論內(nèi)容了解詳情

等以后有空再重寫一遍代碼,抱歉。果然代碼還是放在github上好啊。。。。

----------------------------------

博客總目錄:http://www.cnblogs.com/weibaar/p/4507801.html

----

自從買了kindle以后,總是想要定期刷有沒有便宜的書,amazon經(jīng)常有些1元/2元的書打特價(jià),但是每次都去刷那些榜單太麻煩了,而且榜單又不能按照價(jià)格排名,撈書有點(diǎn)累

所以自己用R語(yǔ)言的rvest包簡(jiǎn)單寫了一個(gè)小程序,讓它自動(dòng)按照不同價(jià)格區(qū)間把特價(jià)書給分出來(lái)。

主要看的是kindle新品排行榜和最快暢銷榜。

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

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

?

不在博客園上閱讀時(shí)才會(huì)看到的,這篇博文歸http://www.cnblogs.com/weibaar 所有

僅保證在博客園博客上的排版干凈利索還有代碼塊與圖片正確顯示,他站請(qǐng)保留作者信息尊重版權(quán)啊

需要預(yù)先安裝data.table / dplyr / rvest包。

代碼如下

install.packages("rvest") install.packages("data.table") install.packages("dplyr")

?

主要分享點(diǎn)是:

1、Rvest的簡(jiǎn)單應(yīng)用實(shí)例
2、如何把數(shù)據(jù)框(data.frame or table) 輸出為html文件,即添加html腳本的方法

?

1 library(rvest) 2 library(data.table) 3 library(dplyr) 4 #這里是導(dǎo)入網(wǎng)址。研究一下amazon的順序,直接導(dǎo)入就好 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函數(shù),讀取網(wǎng)頁(yè)內(nèi)容。里面有些不常用的字段,為了最后導(dǎo)出效果好看,我沒全部都導(dǎo)。 18 #有額外需要的可以自己改編,譬如分類啊,好評(píng)率啊等等。對(duì)我來(lái)說(shuō),知道價(jià)格、書名就夠了 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("div.zg_itemPriceBlock_normal strong.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 #新書榜里沒有銷售變動(dòng)記錄,所以記為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 #合并數(shù)據(jù) 36 combine<-data.table(img_link,title_link,price,ranking_movement) 37 setnames(combine,c("圖像","書名","價(jià)格","銷售變動(dòng)")) 38 #以防被封IP,設(shè)為5秒跑一次數(shù)據(jù)。 39 Sys.sleep(5) 40 combine 41 } 42 43 #做一個(gè)循壞開始跑數(shù) 44 final<-data.table() 45 for (i in 1:10){ 46 final<-rbind(final,readdata(i)) 47 print(i) 48 } 49 50 #這里編寫一個(gè)函數(shù),把data.table轉(zhuǎn)化為html_table#要點(diǎn)請(qǐng)查看w3school,table頁(yè),以<table>開始,表頭是<th>,行與行之間是<tr>#主要就是sapply, apply,paste的應(yīng)用啦……就是把數(shù)據(jù)框先加<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 #這里應(yīng)用transfer_html_table函數(shù),把榜單輸出為html表格 60 final_less1<-transfer_html_table(rawdata=final %>% filter(價(jià)格<=1)) 61 write(final_less1,"~//Kindle-低于1元特價(jià)書.html") 62 63 64 final_1_2<-transfer_html_table(rawdata=final %>% filter(價(jià)格>1 & 價(jià)格<=2)) 65 write(final_1_2,"~//Kindle_1-2元特價(jià)書.html") 66 67 final_2_5<-transfer_html_table(rawdata=final %>% filter(價(jià)格>2 & 價(jià)格<=5)) 68 write(final_2_5,"~//Kindle_2-5元特價(jià)書.html")

?

?

?

最后在我的文檔("~//"表示定位到我的文檔那里)會(huì)找到三個(gè)HTML文件,打開來(lái),大概長(zhǎng)下面這個(gè)樣子,于是就可以很愉悅得選書了。Kindle時(shí)不時(shí)會(huì)把一些好書1元賤賣的~~所以有了kindle經(jīng)常手賤,有這個(gè)小腳本之后我覺得我會(huì)更加手賤買書了。。。

?

如果大家有興趣,還可以去搜一下R語(yǔ)言批處理、自動(dòng)運(yùn)行等文章來(lái)看,把這個(gè)代碼設(shè)為定期跑一下,然后讓結(jié)果能夠累計(jì)保存。那么以后就知道kindle商城在什么時(shí)候調(diào)價(jià)最多了。 amazon還是比較容易爬蟲的,它html頁(yè)面內(nèi)代碼很規(guī)范整潔,除了在產(chǎn)品詳情頁(yè)里,產(chǎn)品描述(product description)總是被腳本保護(hù)起來(lái),比較難爬。

不在博客園上閱讀時(shí)才會(huì)看到的,這篇博文歸http://www.cnblogs.com/weibaar 所有

僅保證在博客園博客上的排版干凈利索還有代碼塊與圖片正確顯示,他站請(qǐng)保留作者信息尊重版權(quán)啊

?

以及最近開始學(xué)python了!

大牛分享了一個(gè)很好用的python IDE,叫做ANACONDA,里面那個(gè)spyder的IDE真的做的很棒~~跟rstudio有的一拼~?而且ANACONDA集成了python 2.7,都不用單獨(dú)下python了~~

然后github上有兩個(gè)教程寫的還蠻不錯(cuò)的

1、 python入門

https://github.com/qiwsir/StarterLearningPython

2、python爬蟲101個(gè)示例(基于python 3)

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

轉(zhuǎn)載于:https://www.cnblogs.com/weibaar/p/4824578.html

總結(jié)

以上是生活随笔為你收集整理的R语言-Kindle特价书爬榜示例 输出HTML小技巧的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。