DcardR
的主要功能在於使大量爬取 Dcard 內容的過程簡化,並以四個 function 為主要內容:
1) dcardPostContent()
方便用以爬取文章內容本身,
2) dcardCommentContent()
用以爬取留言內容,
3) dcardBoardContent()
爬取一個板的相關內容,
4) dcardForumInfo()
則提供 Dcard 各個板的綜觀內容。
下方附有各個 function 的使用範例與介紹。
要下載 DcardR
,請在 console 輸入以下指令:
library(devtools)
install_github("b05102139/DcardR")
以下範例介紹如何爬取10篇感情板中的文章。dcardPostContent()
允許輸入想要爬取的板名,想要爬取的數量,是否使用熱門排名(否則使用發表時間作為爬名),以及爬完每篇文章後的休眠時間(以1秒為基礎設定,要加快或變慢的話也可以輸入比1更小或更大的數字,但要小心爬得比1快有可能爬幾下就被API擋住)。爬取過程會顯示於
console,幫助確認進度:
library(DcardR)
relationship_10 <- dcardPostContent(board = "relationship",
posts = 10,
by_popular = F,
rate_limit = 1)
#> Total pages: 1
#> Page 1 complete: 0.367 sec elapsed
#> Finished crawling pages.
#> Total posts: 10
#> Post 1 complete: 1.432 sec elapsed
#> Post 2 complete: 1.23 sec elapsed
#> Post 3 complete: 1.355 sec elapsed
#> Post 4 complete: 1.236 sec elapsed
#> Post 5 complete: 1.397 sec elapsed
#> Post 6 complete: 1.306 sec elapsed
#> Post 7 complete: 1.213 sec elapsed
#> Post 8 complete: 1.197 sec elapsed
#> Post 9 complete: 1.227 sec elapsed
#> Post 10 complete: 1.181 sec elapsed
#> Finished crawling posts.
爬取內容大約如下:
library(magrittr) # pipe function
library(knitr) # to help display the dataframe as a table
head(relationship_10, 1) %>%
knitr::kable(format = "html")
id
title
content
excerpt
anonymousSchool
anonymousDepartment
pinned
forumId
replyId
createdAt
updatedAt
commentCount
likeCount
tags
topics
supportedReactions
withNickname
reportReason
hiddenByAuthor
meta
forumName
forumAlias
nsfw
replyTitle
gender
personaSubscriptable
reactions
hidden
customStyle
isSuspiciousAccount
layout
withImages
withVideos
media
reportReasonText
mediaMeta
postAvatar
school
department
categories
234078846
承諾給不給
如果另一半問自己以後會不會跟他/她結婚 但是自己根本沒想過這個問題 還是會一起討論未來嗎?
如果另一半問自己以後會不會跟他/她結婚,但是自己根本沒想過這個問題,還是會一起討論未來嗎?
TRUE
TRUE
FALSE
42851318-b9e2-4a75-8a05-9fe180becefe
NULL
2020-07-19T11:26:43.605Z
2020-07-19T11:26:43.605Z
0
0
HIDE\_THUMBNAIL
c(“愛情”,
“感情”)
NULL
FALSE
FALSE
NA
感情
relationship
FALSE
NULL
F
TRUE
list()
FALSE
NULL
FALSE
classic
FALSE
FALSE
list()
list()
NULL
NULL
NULL
dcardPostContent()
跟直接用dcardBoardContent()
爬取的差異在於,前者會回報全文,後者則只有文章截選內容,並不完整。若希望文章內容完整者請使用此
function。
留言 (dcardCommentContent()
) 與各個板 (dcardBoardContent()
)
的爬取也類似以上過程,可以直接參考。唯dcardForumInfo()
直接使用即可,不需輸入額外資訊,若想知道各個板大致的狀況或者板名(因為上面幾個
function 需要輸入英文板名),可以打開來參考:
dcardForumInfo()
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.