ตัวดึงข้อมูลอีกแบบหนึ่ง
ในแบบฝึกหัดก่อนหน้า เราได้สร้างฟังก์ชันที่ดึงเนื้อหาข้อความจากหัวเรื่อง H2 ได้สำเร็จ
คราวนี้ลองทำสิ่งอื่นกันบ้าง: เราต้องการดึงลิงก์ทั้งหมดที่มีอยู่ในหน้าเว็บที่กำหนด โดยจะต้องเรียกใช้ฟังก์ชันจาก httr สองตัว ได้แก่ html_nodes() ซึ่งกำหนด argument css เป็น "a" (a คือแท็ก HTML สำหรับลิงก์) และ html_attr() ซึ่งดึง attribute ที่ต้องการจาก node — ในกรณีนี้คือ "href" ซึ่งเป็นที่อยู่ของลิงก์
โหลด purrr และ rvest ไว้ให้แล้ว และยังสามารถเรียกใช้เวกเตอร์ urls ใน workspace ได้เช่นเดิม
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
Functional Programming ระดับกลางด้วย purrr
คำแนะนำการฝึกหัด
Prefill ฟังก์ชัน
html_nodes()โดยกำหนด argumentcssเป็น"a"สร้างฟังก์ชัน
href()ซึ่งเป็นเวอร์ชัน prefill ของhtml_attr()Compose การรวมกันของ
href(),get_a()และread_html()ให้เป็นฟังก์ชันใหม่Map ฟังก์ชันใหม่นี้บนเวกเตอร์
urls
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
# Create a partial version of html_nodes(), with the css param set to "a"
get_a <- ___(html_nodes, ___)
# Create href(), a partial version of html_attr()
href <- ___(___, name = "href")
# Combine href(), get_a(), and read_html()
get_links <- ___(___, ___, ___)
# Map get_links() to the urls list
res <- ___(urls, ___) %>%
set_names(urls)
# See the result
res