[分享] 更進一步使用RSelenium抓取PTT內容與通知

作者: wanson (望生)   2016-07-24 01:52:16
最近看到有人教學使用RSelenium 抓取PTT的內容
https://www.youtube.com/watch?v=PYy5C9IIgp8
我自學了一下發現的確可行
我自己本身因為有搭共乘的需求
特別搭乘的是比較少人提供的部分
所以我想更進一步使用這個方法並且進一步通知
上述網址的教學只能將爬到的檔案存成一個file
並且限制在該網頁的首頁
但是我希望更多的功能為以下,想要請問一下不知道可否使用R更進一步處理
1. 爬取更多頁面或是該版所有的頁面
這個部分我發現
他似乎根據網址的index那邊變動
如果我使用最舊就會等於1,下一頁就是二
但我使用最新他只會顯示index
https://www.ptt.cc/bbs/car-pool/index2.html
似乎可以寫回圈去提取
2. 定期自動爬蟲
我想要讓電腦設定每兩小時爬一次,不知道要怎樣設定
不知道是否可以教學一下
謝謝
以下是使用他的教學我產生的code
library(RSelenium)
url= "https://www.ptt.cc/bbs/car-pool/index.html"
remDr <- remoteDriver(remoteServerAddr = "localhost"
, port = 4444
, browserName ="firefox"
)
remDr$open() #open browser
remDr$getStatus()#check the status of browser
remDr$navigate(url)# website to crawl
#the separate symbol in ppt is r-ent
#get the element from the website
webElem<-remDr$findElements('css selector', ".r-ent")#class for period (.) id
then use #
a = sapply(webElem, function(x){
c =x$findChildElement('css selector', '.author')
d =x$findChildElement('css selector', '.title')
e =x$findChildElement('css selector', '.date')
cbind(c("author" = c$getElementText(), "title" =
d$getElementText(),e$getElementText()))
}
)
t=as.data.frame(t(a))
作者: sulaxd (SulaXD)   2016-07-24 12:04:00
若是非Linux系統的話,可以用Sys.sleep函數控制限制時間,或是windows的排程。
作者: wanson (望生)   2016-07-24 12:48:00
我學會排程了 另外如果要進一步處理另一個問題要怎辦?

Links booklink

Contact Us: admin [ a t ] ucptt.com