मुख्य सामग्री पर जाएं

R और PhantomJS के साथ वेब स्क्रैपिंग

PhantomJS का उपयोग करके R के साथ Javascript द्वारा जनित डेटा को स्क्रैप करने पर संक्षिप्त ट्यूटोरियल।
अपडेट किया गया 25 सित॰ 2026  · 5 मि॰ पढ़ें

AI के साथ खोजें

ChatGPTClaudePerplexity

जब आपको वेब स्क्रैपिंग करनी हो, तो आप आमतौर पर Hadley Wickham के rvest पैकेज का उपयोग करेंगे। यह पैकेज किसी वेबपेज को जनरेट करने वाले HTML कोड को लाने के लिए एक आसान, तैयार समाधान प्रदान करता है। हालाँकि, जब वेबसाइट या वेबपेज वह डेटा दिखाने के लिए JavaScript का उपयोग करता है जिसमें आपकी रुचि है, तो rvest पैकेज में आवश्यक कार्यक्षमता नहीं होती। एक समाधान PhantomJS का उपयोग करना है।

(R में और डेटा इम्पोर्ट करने का अभ्यास करना चाहते हैं? इस ट्यूटोरियल को आज़माएँ।)

आवश्यक पैकेज लोड करें

पहले चरण के रूप में, आपको इस विश्लेषण के लिए आवश्यक सभी पैकेजों को वर्कस्पेस में लोड करना होगा (यदि आपने ये पैकेज अभी तक अपने लोकल सिस्टम पर इंस्टॉल नहीं किए हैं, तो उन्हें उपलब्ध कराने के लिए install.packages() का उपयोग करें):

library(rvest)
library(stringr)
library(plyr)
library(dplyr)
library(ggvis)
library(knitr)
options(digits = 4)

R के साथ Javascript द्वारा जनित डेटा स्क्रैप करना

अगला चरण PhantomJS का उपयोग करके TechStars डेटा इकट्ठा करना है। निम्नलिखित बेसिक .js फ़ाइल देखें:

// 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();
});

यह स्क्रिप्ट मूल रूप से अंतर्निहित जावास्क्रिप्ट कोड के अपना काम करने के बाद HTML पेज को रेंडर करती है, जिससे आप सभी तालिकाओं सहित HTML पेज को प्राप्त कर सकें। इस विश्लेषण के बाकी हिस्से के लिए R में ही बने रहने के लिए, हम सुझाव देते हैं कि आप PhantomJS को चालू करने के लिए system() फ़ंक्शन का उपयोग करें (आपको PhantomJS डाउनलोड और इंस्टॉल करना होगा और इसे अपनी working directory में रखना होगा):

# phantomJS को techstars स्क्रैप करने दें, आउटपुट techstars.html में लिखा जाएगा
system("./phantomjs scrape_techstars.js")

इस छोटे से डिटूर के बाद, अंततः आपके लोकल सिस्टम पर एक HTML फ़ाइल, techstars.html, मौजूद है, जिसे rvest के साथ स्क्रैप किया जा सकता है। Techstars वेबपेज के निरीक्षण से पता चलता है कि जिन तालिकाओं में हमारी रुचि है वे css class batch वाले divs में स्थित हैं:

batches <- html("techstars.html") %>%
  html_nodes(".batch")

class(batches)
[1] "XMLNodeSet"

अब आपके पास XMLNodeSet ऑब्जेक्ट्स की एक सूची है: प्रत्येक ऑब्जेक्ट में एक TechStars बैच का डेटा होता है। इनमें हम बैच के स्थान, वर्ष, मौसम (सीज़न) की जानकारी पा सकते हैं, साथ ही कंपनियों के बारे में—उनका मौजूदा मुख्यालय, वर्तमान स्थिति और उन्होंने कुल कितना फंडिंग जुटाया। नीचे दिए गए डेटा संग्रह और सफाई के चरणों पर हम विस्तार से नहीं जाएंगे; आप स्वयं कोड चला सकते हैं और देख सकते हैं कि वे क्या करते हैं। आप देखेंगे कि प्रत्येक जानकारी को अच्छी तरह से फ़ॉर्मेट करने के लिए कुछ कस्टम क्लीनिंग की जा रही है:

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})")
# लोकेशन जानकारी वह सब है जो बैच शीर्षक में वर्ष या सीज़न की जानकारी नहीं है
batch_location <- sub("\\s+$", "",
                      sub("([[:digit:]]{4})", "",
                          sub("(Fall|Spring|Winter|Summer)","",batch_titles)))

# बैच जानकारी के साथ डेटा फ्रेम बनाएं।
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)
})

# breakdown में बैच जानकारी जोड़ें
batch_info_extended <- batch_info[rep(seq_len(nrow(batch_info)),
                                  sapply(breakdown, nrow)),]
breakdown_merged <- rbind.fill(breakdown)

# सभी जानकारी मर्ज करें
techstars <- tbl_df(cbind(breakdown_merged, batch_info_extended)) %>%
  mutate(funding = as.numeric(gsub(",","",gsub("\\$","",funding))))

core R, rvest, plyr और dplyr फ़ंक्शंस के संयोजन के साथ, अब हमारे पास techstars डेटा फ्रेम है; सभी TechStars कंपनियों का एक डेटा सेट, जिसमें सभी सार्वजनिक रूप से उपलब्ध जानकारी साफ़-सुथरे फ़ॉर्मेट में है:

techstars
## Source: local data frame [535 x 7]
##
##          company funding   status                hq location year season
## 1    Accountable  110000   Active    Fort Worth, TX   Austin 2013   Fall
## 2          Atlas 1180000   Active        Austin, TX   Austin 2013   Fall
## 3        Embrace  110000   Failed        Austin, TX   Austin 2013   Fall
## 4  Filament Labs 1490000   Active        Austin, TX   Austin 2013   Fall
## 5        Fosbury  300000   Active        Austin, TX   Austin 2013   Fall
## 6          Gone!  840000   Active San Francisco, CA   Austin 2013   Fall
## 7     MarketVibe  110000 Acquired        Austin, TX   Austin 2013   Fall
## 8           Plum 1630000   Active        Austin, TX   Austin 2013   Fall
## 9  ProtoExchange  110000   Active        Austin, TX   Austin 2013   Fall
## 10       Testlio 1020000   Active        Austin, TX   Austin 2013   Fall
## ..           ...     ...      ...               ...      ...  ...    ...
names(techstars)
## [1] "company"  "funding"  "status"   "hq"       "location" "year"
## [7] "season"

निष्कर्ष

उपरोक्त टूल्स और कोड के संयोजन का उपयोग करके, हम उस वेबसाइट से डेटा स्क्रैप करने में सफल रहे जो अपना डेटा जनरेट करने के लिए JavaScript स्क्रिप्ट का उपयोग करती है। जैसा कि देखा जा सकता है, यह एक बहुत ही संरचित प्रक्रिया है, जिसे एक बार प्रारंभिक कोड उपलब्ध होने पर आसानी से किया जा सकता है। R सीखना चाहते हैं और डेटा साइंस व R के ट्यूटोरियल और कोर्स ढूँढ रहे हैं? DataCamp देखें

विषय
R
डेटा साइंस

R के बारे में और जानें

कोर्स

R परिचय

4 घंटा
3.1M
R में डेटा विश्लेषण की मूल बातें सीखें, जिसमें vectors, lists, और data frames शामिल हैं, और वास्तविक data sets के साथ R का अभ्यास करें।
विवरण देखेंRight Arrow
पाठ्यक्रम शुरू करें
और देखेंRight Arrow