Sabtu, 14 Januari 2017

Bagaimana melakukan Scraping pada Google Scholar menggunakan rvest packages di R

Pada kesempatan ini, saya ingin berbagi tentang scraping google scholar. Google Scholar adalah layanan yang memungkinkan pengguna malakukan pencarian materi-materi pelajaran berupa teks dalam berbagai format publikasi (wikipedia). Sebelum lebih lanjut, kita harus mengenal yang namanya packages "rvest", karena pada scraping web ini digunakan packages tersebut.
install.packages("rvest")
install.packages("ggplot2")
jika anda telah melakukan installasi packages. jalan kan seperti berikut:
library(rvest)
library(ggplot2)
jika telah siap ! anda harus membuka website google scholar untuk mendapatkan link yang akan anda scraping. Link google scholar yang digunakan adalah daftar publikasi salah seorang dosen Kimia FMIPA UII yang aktif menulis.
Berikut:
Selanjutnya anda dapat menuliskan script untuk melakukan scraping. 
> page <- read_html("https://scholar.google.com.my/citations?   user=Gub7uX8AAAAJ&hl=en")
> citations <- page %>% html_nodes ("#gsc_a_b .gsc_a_c") %>% html_text()%>%as.numeric()
> citations
> barplot(citations, main="Berapa Kali Paper Bu Is Fatimah di sitasi?", ylab='Jumlah Sitasi', col="skyblue", xlab="")
Pada script di atas, dilakukan scraping dengan spesifikasi node #gsc_a_b .gsc_a_c. Untuk mengetahui tata letak bagian mana yang akan di ambil dari website. Untuk contoh di atas yaitu mengambil jumlah cited per Paper yang masuk index Google Sholar. Berikut hasil jumlah sitasi per paper :
> citations
 [1] 83 57 34 30 29 23 18 16 14 10 10 10  9  8  8  8  6  6  5  5
Setelah mendapat nilai masing-masing paper, anda bebas mau melakukan analisis atau visualisasi apapun, silahkan. Berikut contoh hasil visualisasi menggunakan barplot.
Kalau script di atas hanya mengambil jumlah sitasi, kali ini kita akan mengambil nama-nama yang pernah menjadi co-authors ibu Is Fatimah

> page <- read_html("https://scholar.google.com/citations?view_op=list_colleagues&hl=en&user=Gub7uX8AAAAJ&hl=en")
> Coauthors = page%>% html_nodes(css=".gsc_1usr_name a") %>% html_text()
> Coauthors = as.data.frame(Coauthors)
> names(Coauthors)='Coauthors'
> head(Coauthors) 
> dim(Coauthors) 
Setelah menjalankan script tersebut, maka akan terdapat beberapa coauthor yang pernah menulis paper bersama bu Is Fatimah. Berikut beberapa nama tersebut :
> head(Coauthors,8) 
          Coauthors
1        Karna Wijaya
2        Shaobin Wang
3        Eko Sugiharto
4        Iqmal Tahir
5        Shariff Ibrahim (Dr)
6        Hijrah Purnama Putra
7        sri atun
8        Sri Handayani
Setelah mendapatkan nama-nama coauthors, maka kita harus mengambil data jumlah sitasi masing-masing co-author. berikut script untuk itu :


> page <- read_html("https://scholar.google.com/citations?         > view_op=list_colleagues&hl=en&user=Gub7uX8AAAAJ&hl=en")
> citations = page%>% html_nodes(css = ".gsc_1usr_cby")%>%html_text()
> citations 
> citations = gsub('Cited by','', citations)
> citations

> citations = as.numeric(citations)
> citations = as.data.frame(citations)
Dari 8 coauthor yang telah di ambil, maka akan terdapat pula jumlah data sitasi sebanyak 8. seperti dibawah ini :
> citations
[1] " 474"   " 15811" " 161"  " 281"  " 703"  "6"  "128"  " 64" 
Dalam semua paper yang dipublikasikan dapat dipastikan terdapat affiliasi, dimana sebagai asal/latarbelakang penulis. agar lebih lengkap, maka kita akan mengambil data affiliasi dari semua coauthor yang ada. berikut scriptnya :

> affilation = page %>% html_nodes(css = ".gsc_1usr_aff")%>%html_text()
> affilation = as.data.frame(affilation)
> names(affilation)='Affilation'
> cauthors=cbind(Coauthors, citations, affilation)
> cauthors 
Berikut beberapa affilasi yang sesuai dengan coauthor yang ada pada pembahasan di atas :
   Affilation
1  Professor of Chemistry, Gadjah Mada University
2  Professor, Department of Chemical Engineering, Curtin                 University, Australia
3  Fakultas MIPA UGM
4  Chemistry Department, Universitas Gadjah Mada
5  Senior Lecturer, Faculty of Applied Sciences, Universiti             Teknologi MARA, Shah Alam,  …
6  Universitas Islam Indonesia
7  professor of chemistry , universitas negeri yogyakarta

8  chemistry, yogyakarta state university
Ketika melihat data yang masih seperti itu, tentunya bagi orang awam susah untuk menentukan nilai 474 tersebut jumlah sitasi siapa? atau Professor of Chemistry, Gadjah Mada University merupakan affilasi author yang mana?, jadi untuk mempermudah maka dibuat sebuah data frame seperti berikut:

> cauthors=cbind(Coauthors, citations, affilation)

> cauthors 
Berikut data yang telah digabungkan :







Sebenarnya, terkait visualisasi tergantung anda mau visualisasi yang menarik dan sesuai dengan data yang ada. berikut saya cantumkan visualisasi dari data sitasi berdasarkan coauthors tersebut.


> cauthors$Coauthors <- factor(cauthors$Coauthors, levels = cauthors$Coauthors[order(cauthors$citations, decreasing=F)])
> ggplot(cauthors,aes(Coauthors,citations))+ +geom_bar(stat="identity", fill="#ff8c1a",size=5)
+theme(axis.title.y   = element_blank())+ylab("# of citations")
+theme(plot.title=element_text(size = 18,colour="blue"), +axis.text.y = element_text(colour="grey20",size=12))
+ggtitle('Citations of Is Fatimah coauthors')+coord_flip()
Hasil dari ggplot tersebut seperti berikut:

sitasi terbanyak adalah Shaobin Wang. !!

Oke !! mungkin sekian. sampai bertemu kembali pada post selanjutnya !!
Keep Spirit to Learn !

Tidak ada komentar:

Posting Komentar