इस लेख में, हम पायथन में उपलब्ध Scrapy मॉड्यूल का उपयोग करके वेब स्क्रैपिंग तकनीक के बारे में जानेंगे।
वेब स्क्रैपिंग क्या है?
वेब स्क्रैपिंग का उपयोग एक क्रॉलर/स्कैनर की मदद से वेबसाइट से डेटा प्राप्त करने के लिए किया जाता है। वेब स्क्रैपिंग उस वेब पेज से डेटा निकालने में काम आती है जो API की कार्यक्षमता प्रदान नहीं करता है। पायथन में, वेब स्क्रैपिंग विभिन्न मॉड्यूल्स जैसे Beautiful Soup, Scrapy और lxml की मदद से की जा सकती है।
यहां हम Scrapy मॉड्यूल का उपयोग करके वेब स्क्रैपिंग पर चर्चा करेंगे।
इसके लिए, हमें पहले Scrapy इंस्टॉल करना होगा।
टर्मिनल या कमांड प्रॉम्प्ट में टाइप करें -
>>> pip install Scrapy
चूंकि Scrapy एक फ्रेमवर्क है, हमें एक इनिशियलाइज़िंग कमांड चलाने की आवश्यकता है
>>> scrapy startproject tutpts
यहां हम एक वेब क्रॉलर/स्पाइडर बनाते हैं ताकि वेबसाइट से डेटा निकाला जा सके।
क्रॉलर बनाने के लिए हम एक अलग स्क्रिप्ट tutptscraw.py बनाते हैं। यहां हम सामग्री निष्कर्षण के लिए एक क्लास घोषित करते हैं। यहां हम वेब क्रॉलर को नाम देते हैं और .requests का उपयोग करके दिए गए URL से डेटा प्राप्त करते हैं।
जनरेटर फंक्शन्स का उपयोग किया जाता है जो प्राप्त डेटा को यील्ड करते हैं।
उदाहरण
import scrapy
class ExtractUrls(scrapy.Spider):
name = "fetch"
# जनरेटर फंक्शन
def start_requests(self):
# URL दर्ज करें
urls = ['https://www.tutorialspoint.com/index.htm/',]
for url in urls:
yield scrapy.Request(url=url, callback=self.parse)
यहां एंकर टैग के भीतर संलग्न सभी डेटा को रिक्वेस्ट फंक्शन का उपयोग करके प्राप्त किया जाता है। चूंकि Scrapy एक मिनी फ्रेमवर्क है, हम सभी कार्यक्षमताओं को Scrapy शेल में चलाते हैं।
Scrapy शेल को सक्रिय करने के लिए हम निम्न कमांड का उपयोग करते हैं
scrapy shell https://www.tutorialspoint.com/index.htm
अब हम सेलेक्टर्स यानी CSS या xpaths का उपयोग करके एंकर टैग से डेटा प्राप्त करते हैं
response.css('a')
links = response.css('a').extract()वेब पेज पर उपलब्ध सभी लिंक प्राप्त करने के लिए हम एक parse मेथड बनाते हैं। Scrapy आंतरिक रूप से पहले देखे गए URLs को बायपास करता है जिससे परिणामों के प्रदर्शन के दौरान रेंडरिंग समय कम हो जाता है।
import scrapy
class ExtractUrls(scrapy.Spider):
name = "fetch"
# जनरेटर फंक्शन
def start_requests(self):
# URL दर्ज करें
urls = ['https://www.tutorialspoint.com/index.htm/',]
for url in urls:
yield scrapy.Request(url=url, callback=self.parse)
# Parse फंक्शन
def parse(self, response):
title = response.css('title::text').extract_first()
# एंकर टैग प्राप्त करें
links = response.css('a::attr(href)').extract()
for link in links:
yield
{
'title': title,
'links': link
}
if 'tutorialspoint' in link:
yield scrapy.Request(url=link, callback=self.parse)
निष्कर्ष
इस ट्यूटोरियल में, हमने पायथन में Scrapy मॉड्यूल का उपयोग करके वेब क्रॉलर के कार्यान्वयन के बारे में सीखा।