Bắt đầu ngayBắt đầu miễn phí

Phiên bản possibly() của read_lines()

Chúng ta vẫn đang làm việc với loạt URL bạn được giao để thu thập dữ liệu (scrape). Ta đang thử nhiều cách để nhận diện các URL không truy cập được. Tại sao phải làm vậy? Bởi vì bước đầu tiên của web scraping là kiểm tra xem bạn có thể truy cập URL hay không. Đoạn mã ta viết ra sẽ phục vụ mục tiêu này.

Ở bài trước, ta đã bọc hàm read_lines() bên trong safely(). Trong bài này, ta sẽ dùng hàm possibly().

Trong thuật ngữ web, mã 404 cho biết trang không tồn tại. Con số này sẽ được dùng làm đối số otherwise.

Ngoài ra, vì read_lines() trả về một vector độ dài n khi đọc một trang web, ta sẽ gộp chúng lại bằng hàm paste().

Vector urls đã được cung cấp sẵn cho bạn.

Bài tập này là một phần của khóa học

Lập trình hàm nâng cao với purrr

Xem khóa học

Hướng dẫn bài tập

  • Bọc hàm read_lines() trong lời gọi possibly() sao cho otherwise trả về 404.

  • Map hàm vừa tạo lên danh sách URL, rồi pipe thẳng vào set_names()

  • Biến mỗi phần tử của danh sách thành một chuỗi độ dài 1 bằng cách dùng hàm paste() với đối số collapse đặt là " ".

  • Chỉ giữ lại các phần tử có giá trị bằng 404.

Bài tập tương tác thực hành trực tiếp

Hãy thử làm bài tập này bằng cách hoàn thành đoạn mã mẫu này.

# 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, ___)
Chỉnh sửa và Chạy Mã