Advertisement
Guest User

Untitled

a guest
Aug 31st, 2015
68
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.49 KB | None | 0 0
  1. # 必要なパッケージ
  2. library(dplyr)
  3. library(xml2)
  4. library(rvest)
  5. library(readr)
  6.  
  7. # 対応しているWebサイトと関数
  8. # 1. retest_qt... qiita.com
  9. # 2. retest_gh... github.com
  10. # 3. retest_so... stackoverflow.com
  11.  
  12. retest_qt <- function(url, rank)
  13. {
  14. # 1. qiita.com でのコードまでのCSSパス
  15. path <- 'div .code-frame .highlight pre'
  16.  
  17. # 2. コード部分を指定して.Rファイルを一時フォルダ内に作る
  18. cat(html_text(
  19. html_nodes(read_html(x = url),
  20. css = path)[rank]),
  21. file = tempfile(pattern = paste(rank, "retest", sep = "_"), fileext = ".r"))
  22.  
  23. # 3. 2.で作成した一時ファイルまでのパス
  24. tmp.file.path <- paste(tempdir(), grep(pattern = paste(rank, "retest", sep = "_"), ".r$",
  25. x = list.files(tempdir()),
  26. value = TRUE), sep = "/")
  27. # 4. Rファイルをsourceとして実行。実行後は削除する
  28. tryCatch(
  29. {
  30. source(file = tmp.file.path, echo = TRUE)
  31. }, error = function()
  32. {
  33. file.remove(tmp.file.path)
  34. },
  35. finally = file.remove(tmp.file.path)
  36. )
  37. }
  38.  
  39. retest_gh <- function(url, rank, lang = c("R", "plain"), execute = TRUE)
  40. {
  41.  
  42. if (lang == "R") {
  43. path <- 'div .highlight.highlight-R'
  44. } else if (lang == "plain") {
  45. path <- 'pre code'
  46. }
  47. cat(html_text(
  48. html_nodes(read_html(x = url),
  49. css = path)[rank]),
  50. file = tempfile(pattern = paste(rank, "retest", sep = "_"), fileext = ".r"))
  51. tmp.file.path <- paste(tempdir(), grep(pattern = paste(rank, "retest", sep = "_"), ".r$",
  52. x = list.files(tempdir()),
  53. value = TRUE), sep = "/")
  54. tryCatch(
  55. {
  56. source(file = tmp.file.path, echo = TRUE)
  57. }, error = function()
  58. {
  59. file.remove(tmp.file.path)
  60. },
  61. finally = file.remove(tmp.file.path)
  62. )
  63. }
  64.  
  65. retest_so <- function(url, rank)
  66. {
  67. path <- 'pre code'
  68. cat(html_text(
  69. html_nodes(read_html(x = url), css = path)[rank]),
  70. file = tempfile(pattern = paste(rank, "retest", sep = "_"), fileext = ".r"))
  71. tmp.file.path <- paste(tempdir(), grep(pattern = paste(rank, "retest", sep = "_"), ".r$",
  72. x = list.files(tempdir()),
  73. value = TRUE), sep = "/")
  74. tryCatch(
  75. {
  76. source(file = tmp.file.path, echo = TRUE)
  77. }, error = function()
  78. {
  79. file.remove(tmp.file.path)
  80. },
  81. finally = file.remove(tmp.file.path)
  82. )
  83. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement