開始使用免費開始

read_lines() 的 possibly() 版本

我們持續使用先前提供、用來擷取的那組 URL。現在要嘗試幾種方法來找出無法存取的 URL。為什麼要這麼做?因為網頁擷取的第一步,就是先判斷 URL 是否可存取。這正是我們現在撰寫的程式碼將派上用場的地方。

在上一個練習中,我們把 read_lines() 函式包在 safely() 裡。這一題改用 possibly() 函式。

在網頁術語中,404 代表該網頁不存在或無法取得。這個數字會用在 otherwise 參數上。

另外,因為 read_lines() 讀取網頁時會回傳長度為 n 的向量,我們會用 paste() 函式把它們合併(collapse)。

已為你提供 urls 向量。

本練習屬於課程

使用 purrr 的 R 語言中級函式程式設計

檢視課程

練習說明

  • read_lines() 函式包在 possibly() 呼叫中,並在 otherwise 的情況回傳 404。

  • 將這個新建立的函式映射到 URL 清單上,並直接 pipe 進 set_names()

  • 使用 paste(),把清單中的每個元素轉成長度為 1 的字元向量,collapse 參數設為 " "

  • 只保留等於 404 的元素。

動手互動練習

試著完成這個範例程式碼,體驗一下這個練習。

# Create a possibly() version of read_lines()
possible_read <- ___(___, otherwise = ___)

# Map this function on urls, pipe it into set_names()
res <- map(urls, ___) %>% ___(urls)

# Paste each element of the list 
res_pasted <- ___(res, ___, collapse = ___)

# Keep only the elements which are equal to 404
___(res_pasted, ___)
編輯並執行程式碼