Halaman web target dengan data tabel

Untuk tutorial ini, kita akan melihat situs web pemain basket. Katakanlah kita tertarik untuk mengambil data tabel dari URL https://www.basketball-reference.com/players/l/leonaka01.html

Web Halaman Target

Untuk itu kita menggunakan librari rvest :

library(rvest)
## Loading required package: xml2

Menggunakan firefox webdeveloper

Untungnya, sebagian besar browser modern memiliki alat yang memungkinkan pengguna memeriksa langsung HTML dan CSS halaman web mana pun. Di Firefox, keduanya disebut sebagai Alat Pengembang, dan memiliki nama yang mirip di peramban lain. Alat khusus yang paling berguna bagi kita untuk tutorial ini adalah Inspektur.

Kita dapat menemukan Alat Pengembang dengan melihat di pojok kanan atas browser Anda. Anda seharusnya dapat melihat Alat Pengembang jika kita menggunakan Firefox sehingga kita dapat melalui Tampilan -> Alat Lainnya -> Alat Pengembang. Ini akan membuka Alat Pengembang tepat di jendela browser Anda:

Alat Pengembang di Firefox untuk meilhat data tabel

Alat Pengembang akan memudahkan kita untuk memilih elemen yang tepat dari halaman web yang ingin kita kikis dan memeriksa HTML.

Kami perlu melihat di mana data tabel dalam HTML halaman pemain basket, jadi kami akan menggunakan alat Inspeksi untuk melihat elemen ini. Alat Inspeksi akan memilih HTML persis yang kita cari, jadi kita tidak perlu melihat sendiri!

Dengan mengklik elemen itu sendiri, kita dapat melihat bahwa perkiraan data tabel dengan id tag tavel advanced yang terdapat dalam HTML berikut.

Menggunakan apa yang telah kami pelajari

Sekarang setelah kami mengidentifikasi HTML dan CSS tertentu yang perlu kami targetkan data tabel di halaman web, kami dapat menggunakan rvest untuk menangkapnya.

Dari HTML di atas, sepertinya tabel data advanced terkandung dalam kelas tabel dengan id advanced. Setelah kita memiliki semua tag ini, kita dapat mengekstrak teks darinya.

url = "https://www.basketball-reference.com/players/l/leonaka01.html"
url %>%
  read_html %>%
  html_nodes(xpath = '//comment()') %>%
  html_text() %>%
  toString() %>%
  read_html() %>%
  html_node('table#advanced') %>%
  html_table() 
##       Season Age  Tm  Lg Pos   G    MP  PER   TS%  3PAr   FTr ORB% DRB% TRB%
## 1    2011-12  20 SAS NBA  SF  64  1534 16.6 0.573 0.270 0.218  7.9 16.4 12.2
## 2    2012-13  21 SAS NBA  SF  58  1810 16.4 0.592 0.331 0.240  4.3 17.1 11.1
## 3    2013-14  22 SAS NBA  SF  66  1923 19.4 0.602 0.282 0.195  4.6 18.9 12.1
## 4    2014-15  23 SAS NBA  SF  64  2033 22.0 0.567 0.234 0.307  4.8 20.6 12.9
## 5    2015-16  24 SAS NBA  SF  72  2380 26.0 0.616 0.267 0.306  4.7 18.4 11.8
## 6    2016-17  25 SAS NBA  SF  74  2474 27.6 0.610 0.295 0.406  3.7 15.7  9.8
## 7    2017-18  26 SAS NBA  SF   9   210 26.0 0.572 0.315 0.342  3.1 19.1 11.1
## 8    2018-19  27 TOR NBA  SF  60  2040 25.8 0.606 0.267 0.377  4.2 18.6 11.6
## 9    2019-20  28 LAC NBA  SF  57  1848 26.9 0.589 0.287 0.355  3.1 19.1 11.3
## 10   2020-21  29 LAC NBA  SF  16   546 28.0 0.615 0.268 0.289  3.1 14.2  8.8
## 11    Career  NA     NBA     540 16798 23.2 0.598 0.278 0.323  4.5 18.0 11.4
## 12            NA              NA    NA   NA    NA    NA    NA   NA   NA   NA
## 13 7 seasons  NA SAS NBA     407 12364 22.1 0.597 0.279 0.305  4.8 17.9 11.6
## 14 2 seasons  NA LAC NBA      73  2394 27.1 0.594 0.283 0.341  3.1 18.0 10.7
## 15  1 season  NA TOR NBA      60  2040 25.8 0.606 0.267 0.377  4.2 18.6 11.6
##    AST% STL% BLK% TOV% USG%     OWS  DWS   WS WS/48    OBPM DBPM  BPM VORP
## 1   6.6  2.9  1.1  9.0 14.5 NA  3.1  2.4  5.5 0.171 NA  1.6  1.8  3.4  2.1
## 2   7.7  2.7  1.3  9.6 16.4 NA  3.0  3.3  6.2 0.166 NA  1.1  2.0  3.1  2.3
## 3  10.4  3.0  1.9 10.3 18.3 NA  3.8  3.9  7.7 0.193 NA  2.1  3.0  5.1  3.5
## 4  13.0  3.7  1.8  9.4 23.0 NA  4.2  4.4  8.6 0.204 NA  2.8  3.1  5.9  4.1
## 5  13.0  2.8  2.3  7.8 25.8 NA  8.3  5.5 13.7 0.277 NA  6.1  3.0  9.1  6.7
## 6  18.9  2.7  1.8  9.1 31.1 NA  8.9  4.7 13.6 0.264 NA  7.1  2.2  9.4  7.1
## 7  17.7  4.3  3.6 11.1 30.6 NA  0.3  0.5  0.9 0.196 NA  5.2  4.9 10.1  0.6
## 8  16.4  2.5  1.0  8.4 30.3 NA  6.1  3.4  9.5 0.224 NA  6.1  1.1  7.2  4.7
## 9  26.4  2.6  1.6 10.2 33.0 NA  5.4  3.3  8.7 0.226 NA  6.5  2.4  8.9  5.1
## 10 28.2  2.7  1.7  7.4 29.4 NA  2.3  0.8  3.1 0.270 NA  5.8  1.1  7.0  1.2
## 11 14.9  2.9  1.7  9.1 24.9 NA 45.4 32.2 77.6 0.222 NA  4.5  2.4  6.8 37.5
## 12   NA   NA   NA   NA   NA NA   NA   NA   NA    NA NA   NA   NA   NA   NA
## 13 12.3  3.0  1.8  9.1 22.5 NA 31.6 24.7 56.3 0.219 NA  3.8  2.6  6.4 26.4
## 14 26.9  2.7  1.6  9.7 32.2 NA  7.7  4.1 11.8 0.236 NA  6.3  2.1  8.4  6.4
## 15 16.4  2.5  1.0  8.4 30.3 NA  6.1  3.4  9.5 0.224 NA  6.1  1.1  7.2  4.7

Daftar Pustaka :

  1. https://www.dataquest.io/blog/web-scraping-in-r-rvest/