1. 程式人生 > >R語言-Kindle特價書爬榜示例 & 輸出HTML小技巧

R語言-Kindle特價書爬榜示例 & 輸出HTML小技巧

20170209更新:

根據回覆提示,rvest包更新,原用函式html作廢,需改用read_html

並後續amazon網頁改版等

因此此文章程式碼失效!各位可看評論內容瞭解詳情

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

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

----

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

所以自己用R語言的rvest包簡單寫了一個小程式,讓它自動按照不同價格區間把特價書給分出來。

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

不在部落格園上閱讀時才會看到的,這篇博文歸http://www.cnblogs.com/weibaar 所有

僅保證在部落格園部落格上的排版乾淨利索還有程式碼塊與圖片正確顯示,他站請保留作者資訊尊重版權啊

需要預先安裝data.table / dplyr / rvest包。

程式碼如下

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

主要分享點是:

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("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 #新書榜裡沒有銷售變動記錄,所以記為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

相關推薦

R語言-Kindle特價示例 & 輸出HTML技巧

20170209更新: 根據回覆提示,rvest包更新,原用函式html作廢,需改用read_html 並後續amazon網頁改版等 因此此文章程式碼失效!各位可看評論內容瞭解詳情 等以後有空再重寫一遍程式碼,抱歉。果然程式碼還是放在github上好啊。。。。 -------------------

R語言取前程無憂網招聘職位

資料的獲取是資料探勘的第一步,如果沒有資料何談資料探勘?有時候在做演算法測試的時候,一個好的資料集也是演算法實驗成功的前提保障。當然我們可以去網上下載大型資料網站整理好的,專業的資料,但是自己動手爬取資料是不是更愜意呢? 說到這裡,給大家推薦一些常用的大型資料集: (1)、Mov

R語言取動態網頁之環境準備

   在R實現pm2.5地圖資料展示文章中,使用rvest包實現了靜態頁面的資料抓取,然而rvest只能抓取靜態網頁,而諸如ajax非同步載入的動態網頁結構無能為力。在R語言中,爬取這類網頁可以使用RSelenium包和Rwebdriver包。   RSelenium包和Rwebdriver包都是

從菜鳥到高手,R語言單都在這!

隨著大資料的興起,以及對便捷優秀的語言工具的渴求,人們對學習、掌握R語言的需求越來越大。然而,目前大部分的高校都沒有開設R語言的相關課程,導致很多人不知道從何下手。大聖眾包威客平臺將在本文為你推薦從入門到應用的R語言相關書籍,趕緊收藏起來吧!   一、理論方面   1

R語言-處理異常值或報錯的三個示例

Tuesday, March 31, 2015 之前用rvest幫人寫了一個定期抓取amazon價格庫存,並與之前價格比較的小程式,算是近期寫過的第一個完整的程式了。裡面涉及了一些報錯的處理。 這裡主要參考了stackoverflow上的以下問答: 以下是程式碼示例: 1)使用tr

R語言-用R眼看琅琊小說的正確姿勢

feiliu_linchen<-text[grepl("飛流",text)&grepl("藺晨|閣主|藺大公子",text)] #隨機選幾個樣本看看 feiliu_linchen[sample(1:length(feiliu_linchen),20)]

R語言 爬蟲】用R爬蟲,取杭州安居客九堡租房資訊

在當今網際網路時代,資料要會挖,得先學會爬!爬的過程是痛苦的,因為在計算機程式開發領域,網路爬蟲的開發是一個很專業的方向,技術門檻比較高,它所要求的綜合知識很多,相信很多同學都望而卻步了。別急,說話說到

R語言(rvest包)取獵聘網招聘資訊(保證可重複性)

前言 最近一直在思考動手做自己的第一個R語言資料分析專案,在R語言中文社群公眾號上看了許多爬取招聘網站的案例後,發現做招聘資訊分析是個不錯的選擇: 1. 整合並分析招聘資訊可以深入瞭解各個崗位的整體收入情況、學歷要求、經驗要求等,相信這是許多人都感興趣的;  2. 招聘網站的

R語言一鍵取英格蘭足球超級聯賽16-17賽季所有比分(基於RCurl)

一、背景交代 本人破廠鐵桿,上週剛被紅軍血虐,並且主隊上賽季戰績不佳,無緣歐冠,實在心如死灰(手動捂臉)。 這次也用RCurl來嘗試爬取一下英超聯賽的所有比分,選取賽季為16-17賽季。 選擇的網站不是大家平時關注多的一些入口網站,而是一家香港的專業足球網

[筆記]R語言爬蟲入門——豆瓣新片資料

工具準備chrome瀏覽器+SelectorGadget外掛。SelectorGadget外掛:可以從這裡(http://selectorgadget.com)訪問和下載Selector Gadge的擴充套件程式。請確保跟隨該網站上的指示來安裝這個擴充套件程式。我已經完成了這

R語言爬蟲實戰:知乎live課程資料取實戰

杜雨,EasyCharts團隊成員,R語言中文社群專欄作者,興趣方向為:Excel商務圖表,R語

R語言取中國天氣網單個城市實時天氣預報資料

在傳統零售行業,雨天天氣大概會影響晴天30%-40%的銷售業績,所以從網上獲取天氣資料來作分析,並根據天氣資料作出預測,提前做好預防措施和提醒業務人員,把損失減少到最低就顯得十分重要,用R語言的rvest包就可以方便抓取天氣資料: 本文章的例子僅用於學習之用,

決策樹ID3原理及R語言python程式碼實現(西瓜

決策樹ID3原理及R語言python程式碼實現(西瓜書) 摘要: 決策樹是機器學習中一種非常常見的分類與迴歸方法,可以認為是if-else結構的規則。分類決策樹是由節點和有向邊組成的樹形結構,節點表示特徵或者屬性, 而邊表示的是屬性值,邊指向的葉節點為對應的分類。在對樣本的分類過程中,由頂向下,根據特徵或屬性

R語言筆記

表示 emp 做的 ble subst spl asdfasdf 讀取csv文件 數據文件 近期做的幾個項目都是用R語言來完畢的。正如老師所說。學起來非常快。忘起來也非常快。整理一下放在這裏,方便以後查閱。 安裝所需的包: install.packages("xxxx

R語言中如何使用最二乘法

一次函數 python 散點圖 博客 如何 這裏只是介紹下R語言中如何使用最小二乘法解決一次函數的線性回歸問題。 代碼如下:(數據同上一篇博客)(是不是很簡單????)> x<-c(6.19,2.51,7.29,7.01,5.7,2.66,3.98,2.5,9.1

R語言鏈接數據庫

repl 關閉連接 nec user sql查詢 操作方法 nbsp 數據操作 選擇 轉載自:http://blog.csdn.net/hongweigg/article/details/49779943 R語言連接數據庫常用的方法有2種: 1、使用R數據庫接口 連接MyS

信用卡評分模型(R語言

eric 線圖 樣本 tag 匯總 lines lan 識別 param 信用卡評分 一、數據準備 1、 問題的準備   ? 目標:要完成一個評分卡,通過預測某人在未來兩年內將會經歷財務危機的可能性來提高信用評分的效果,幫助貸款人做出最好的決策。   ? 背景:     –

R語言數據分析系列之五

r語 來看 tab barplot code 繪制 ber map lib R語言數據分析系列之五 —— by comaple.zhang 本節來討論一下R語言的基本圖形展示,先來看一張效果圖吧。 這是一張用R語言生成的,虛擬的wordcloud雲圖,詳細

R語言用nls做非線性回歸以及函數模型的參數估計

nes 線性 -s legend 最小值 fun des and start 非線性回歸是在對變量的非線性關系有一定認識前提下,對非線性函數的參數進行最優化的過程,最優化後的參數會使得模型的RSS(殘差平方和)達到最小。在R語言中最為常用的非線性回歸建模函數是nls,下面以

R語言使用RMySQL連接及讀寫Mysql數據庫

技術分享 fcm list adl 創建數據庫 package install sql安裝 packages 簡單說下安裝過程,一般不會有問題,重點是RMySQL的使用方式。 系統環境說明 Redhat系統:Linux 460-42.6.32-431.29.2.el6.