Web kazıma yapmanız gerektiğinde, normalde Hadley Wickham’ın rvest paketinden yararlanırsınız. Bu paket, bir web sayfasını oluşturan html kodunu almak için kullanıma hazır, kolay bir çözüm sunar. Ancak, ilginizi çeken verileri görüntülemek için web sitesi veya web sayfası JavaScript kullanıyorsa, rvest paketi gerekli işlevselliği sunmaz. Çözümlerden biri PhantomJS kullanmaktır.
(R’a daha fazla veri aktarma alıştırması yapmak ister misiniz? bu öğreticiyi deneyin.)
Gerekli Paketleri Yükleyin
İlk adım olarak, bu analiz için ihtiyaç duyduğumuz tüm paketleri çalışma alanına yüklemeniz gerekir (bu paketleri yerel sisteminize henüz kurmadıysanız, kullanılabilir hale getirmek için install.packages() kullanın):
R ile Javascript Tarafından Üretilen Verileri Kazıma
Sıradaki adım, PhantomJS kullanarak TechStars verilerinin toplanmasıdır. Aşağıdaki temel .js dosyasına göz atın:
// scrape_techstars.js
var webPage = require('webpage');
var page = webPage.create();
var fs = require('fs');
var path ='techstars.html'
page.open('http://www.techstars.com/companies/stats/',function(status){
var content = page.content;
fs.write(path,content,'w')
phantom.exit();});Altyapı:
Betik, temel olarak, alttaki javascript kodu işini bitirdikten sonra HTML sayfasını oluşturur; böylece içindeki tüm tablolarla birlikte HTML sayfasını almanıza olanak tanır. Analizin geri kalanında R içinde kalmak için, PhantomJS’i çağırmak üzere system() fonksiyonunu kullanmanızı öneririz (PhantomJS’i indirip kurmanız ve çalışma dizininize koymanız gerekir):
# phantomJS'in techstars'ı kazımasına izin verin, çıktı techstars.html dosyasına yazılır
system("./phantomjs scrape_techstars.js")Altyapı:
Bu küçük dolambaçtan sonra, sonunda yerel sistemimizde techstars.html adlı ve rvest ile kazınabilecek bir HTML dosyanız var. Techstars web sayfasının incelenmesi, ilgilendiğimiz tabloların batch css sınıfına sahip div’ler içinde yer aldığını gösterir:
Artık elinizde XMLNodeSet nesnelerinden oluşan bir liste var: her nesne tek bir TechStars grubuna ait verileri içeriyor. İçinde grup konumu, yıl, mevsim ile şirketler, mevcut merkezleri, mevcut durumları ve topladıkları toplam yatırım miktarı gibi bilgiler bulunur. Aşağıdaki veri toplama ve temizleme adımlarının ayrıntılarına girmeyeceğiz; kodu kendiniz çalıştırabilir ve neler yaptığını inceleyebilirsiniz. Her bir bilginin düzgün biçimlendirildiğinden emin olmak için bazı özel temizlik işlemlerinin yapıldığını göreceksiniz:
batch_titles <- batches %>%
html_nodes(".batch_class")%>%
html_text()
batch_season <- str_extract(batch_titles,"(Fall|Spring|Winter|Summer)")
batch_year <- str_extract(batch_titles,"([[:digit:]]{4})")# konum bilgisi, grup başlığındaki yıl veya mevsim dışındaki her şeydir
batch_location <- sub("\\s+$","",
sub("([[:digit:]]{4})","",
sub("(Fall|Spring|Winter|Summer)","",batch_titles)))# grup bilgileriyle bir veri çerçevesi oluşturun.
batch_info <- data.frame(location = batch_location,
year = batch_year,
season = batch_season)
breakdown <- lapply(batches,function(x){
company_info <- x %>% html_nodes(".parent")
companies_single_batch <- lapply(company_info,function(y){
as.list(gsub("\\[\\+\\]\\[\\-\\]\\s","", y %>%
html_nodes("td")%>%
html_text()))})
df <- data.frame(matrix(unlist(companies_single_batch),
nrow=length(companies_single_batch),
byrow=T,
dimnames = list(NULL, c("company","funding","status","hq"))))
return(df)})# Grup bilgilerini döküm verisine ekleyin
batch_info_extended <- batch_info[rep(seq_len(nrow(batch_info)),
sapply(breakdown, nrow)),]
breakdown_merged <- rbind.fill(breakdown)# Tüm bilgileri birleştirin
techstars <- tbl_df(cbind(breakdown_merged, batch_info_extended))%>%
mutate(funding = as.numeric(gsub(",","",gsub("\\$","",funding))))Altyapı:
Çekirdek R, rvest, plyr ve dplyr işlevlerinin bir kombinasyonuyla artık elimizde techstars veri çerçevesi var; tüm TechStars şirketlerine ait, kamuya açık bilgilerin düzgün biçimlendirildiği bir veri seti:
Yukarıdaki araç ve kod kombinasyonunu kullanarak, verilerini üretmek için bir JavaScript betiği kullanan bir web sitesinden veri kazımayı başardık. Görüldüğü gibi bu, başlangıç kodu hazır olduğunda kolayca yapılabilecek, oldukça yapılandırılmış bir süreçtir. R öğrenmek ve veri bilimi ile R üzerine öğretici ve kurslar mı arıyorsunuz? DataCamp’e göz atın
Algoritmalar, sistem tasarımı ve davranışsal senaryoları kapsayan bu temel sorularla teknik mülakat sürecine hakim olun. Uzman cevapları, kod örnekleri ve kanıtlanmış hazırlık stratejileri edinin.
Requesty’nin birleşik LLM geçidi, failover’lar, önbellekleme ve analitiklerini kullanarak birden çok sağlayıcıda güvenilir, maliyet-etkin yapay zeka uygulamaları oluşturmayı öğrenin.
Git deponuzu temiz tutmak için .gitignore’u nasıl kullanacağınızı öğrenin. Bu eğitim; temelleri, yaygın kullanım durumlarını ve başlamanıza yardımcı olacak pratik örnekleri kapsar!
R'daki güçlü ve popüler bir veri bilimi araçları koleksiyonu olan tidyverse ile kendi verilerinizi keşfetme ve görselleştirme yolunda ilerlemeye başlayın.
Web kazıma yapmanız gerektiğinde, normalde Hadley Wickham’ın
rvestpaketinden yararlanırsınız. Bu paket, bir web sayfasını oluşturan html kodunu almak için kullanıma hazır, kolay bir çözüm sunar. Ancak, ilginizi çeken verileri görüntülemek için web sitesi veya web sayfası JavaScript kullanıyorsa,rvestpaketi gerekli işlevselliği sunmaz. Çözümlerden biri PhantomJS kullanmaktır.(R’a daha fazla veri aktarma alıştırması yapmak ister misiniz? bu öğreticiyi deneyin.)
Gerekli Paketleri Yükleyin
İlk adım olarak, bu analiz için ihtiyaç duyduğumuz tüm paketleri çalışma alanına yüklemeniz gerekir (bu paketleri yerel sisteminize henüz kurmadıysanız, kullanılabilir hale getirmek için
install.packages()kullanın):R ile Javascript Tarafından Üretilen Verileri Kazıma
Sıradaki adım, PhantomJS kullanarak TechStars verilerinin toplanmasıdır. Aşağıdaki temel .js dosyasına göz atın:
Betik, temel olarak, alttaki javascript kodu işini bitirdikten sonra HTML sayfasını oluşturur; böylece içindeki tüm tablolarla birlikte HTML sayfasını almanıza olanak tanır. Analizin geri kalanında R içinde kalmak için, PhantomJS’i çağırmak üzere
system()fonksiyonunu kullanmanızı öneririz (PhantomJS’i indirip kurmanız ve çalışma dizininize koymanız gerekir):Bu küçük dolambaçtan sonra, sonunda yerel sistemimizde
techstars.htmladlı vervestile kazınabilecek bir HTML dosyanız var. Techstars web sayfasının incelenmesi, ilgilendiğimiz tablolarınbatchcss sınıfına sahip div’ler içinde yer aldığını gösterir:Artık elinizde
XMLNodeSetnesnelerinden oluşan bir liste var: her nesne tek bir TechStars grubuna ait verileri içeriyor. İçinde grup konumu, yıl, mevsim ile şirketler, mevcut merkezleri, mevcut durumları ve topladıkları toplam yatırım miktarı gibi bilgiler bulunur. Aşağıdaki veri toplama ve temizleme adımlarının ayrıntılarına girmeyeceğiz; kodu kendiniz çalıştırabilir ve neler yaptığını inceleyebilirsiniz. Her bir bilginin düzgün biçimlendirildiğinden emin olmak için bazı özel temizlik işlemlerinin yapıldığını göreceksiniz:Çekirdek R,
rvest,plyrvedplyrişlevlerinin bir kombinasyonuyla artık elimizdetechstarsveri çerçevesi var; tüm TechStars şirketlerine ait, kamuya açık bilgilerin düzgün biçimlendirildiği bir veri seti:Sonuç
Yukarıdaki araç ve kod kombinasyonunu kullanarak, verilerini üretmek için bir JavaScript betiği kullanan bir web sitesinden veri kazımayı başardık. Görüldüğü gibi bu, başlangıç kodu hazır olduğunda kolayca yapılabilecek, oldukça yapılandırılmış bir süreçtir. R öğrenmek ve veri bilimi ile R üzerine öğretici ve kurslar mı arıyorsunuz? DataCamp’e göz atın