पायथन के व्यापक पारिस्थितिकी तंत्र में असंख्य पुस्तकालय हैं जो वेब स्क्रैपिंग को एक आसान काम बनाते हैं, और एलएक्सएमएल निश्चित रूप से प्रमुख विकल्पों में से एक है। इस ट्यूटोरियल का उद्देश्य एक विस्तृत गाइड प्रदान करना है कि वेब स्क्रैपिंग के लिए एलएक्सएमएल एक उत्कृष्ट विकल्प क्यों है, एक मजबूत एलएक्सएमएल स्क्रैपर बनाने के चरण, और आपको आरंभ करने के लिए व्यावहारिक उदाहरण। वेब स्क्रैपिंग के दौरान सफल अनुरोधों की अधिकतम संख्या सुनिश्चित करने के लिए ट्यूटोरियल में मूल्यवान अंतर्दृष्टि भी शामिल है।
पायथन में एलएक्सएमएल के साथ वेब स्क्रैपिंग का परिचय
पायथन के एलएक्सएमएल का उपयोग करके वेब स्क्रैपिंग में डाउनलोड किए गए HTML या XML कोड से डेटा का निष्कर्षण और संरचना शामिल है। कुछ पुस्तकालयों के विपरीत जो डाउनलोडिंग और पार्सिंग दोनों को संभालते हैं, एलएक्सएमएल पार्सिंग में माहिर है। वेब पेज डाउनलोड करने के लिए, आप आमतौर पर अनुरोध जैसे HTTP क्लाइंट का उपयोग करेंगे। एक बार HTML या XML डेटा डाउनलोड हो जाने के बाद, lxml इस डेटा को पार्स कर सकता है, जिससे आप विशिष्ट तत्वों और विशेषताओं तक प्रभावी ढंग से पहुंच प्राप्त कर सकते हैं।
वेब स्क्रैपिंग के लिए Python का lxml क्यों चुनें?
अपने वेब स्क्रैपिंग प्रोजेक्ट के लिए एलएक्सएमएल का चयन कई लाभों के साथ आता है:
लाभ:
- तानाना: C लाइब्रेरीज़ libxml2 और libxslt के शीर्ष पर निर्मित, lxml अत्यधिक विस्तार योग्य है और पायथन की सरलता के साथ-साथ देशी C लाइब्रेरी के गति लाभ प्रदान करता है।
- एक्सएमएल संरचना: XML संरचना को निर्दिष्ट करने के लिए तीन स्कीमा भाषाओं का समर्थन करता है और XPath को पूरी तरह से कार्यान्वित करता है, जो इसे XML दस्तावेज़ों में तत्वों के माध्यम से नेविगेट करने के लिए अविश्वसनीय रूप से शक्तिशाली बनाता है।
- डेटा ट्रैवर्सल: विभिन्न XML और HTML संरचनाओं के माध्यम से जाने में सक्षम, बच्चों, भाई-बहनों और अन्य तत्वों के माध्यम से नेविगेशन की अनुमति देता है। यह सुविधा इसे ब्यूटीफुलसूप जैसे अन्य पार्सर्स पर बढ़त देती है।
- संसाधन क्षमता: अन्य पुस्तकालयों की तुलना में कम मेमोरी की खपत करता है, जिससे यह बड़े डेटासेट को पार्स करने के लिए अत्यधिक कुशल हो जाता है।
हालाँकि, खराब लिखे गए या टूटे हुए HTML को पार्स करने के लिए lxml हमेशा सबसे अच्छा विकल्प नहीं होता है। ऐसे मामलों में, आप फ़ॉलबैक विकल्प के रूप में ब्यूटीफुलसूप का सहारा ले सकते हैं।
पायथन में एक मजबूत एलएक्सएमएल पार्सर बनाने के चरण
चरण 1: उपयुक्त उपकरण चुनें
इससे पहले कि आप स्क्रैपिंग शुरू करें, आपको उपकरणों का सही सेट चुनना होगा। HTTP क्लाइंट के लिए, Python जैसी लाइब्रेरी ऑफ़र करता है Requests
, HTTPX
, और aiohttp
. यदि आपका लक्ष्य एक गतिशील वेबसाइट है जो जावास्क्रिप्ट पर निर्भर है, तो आपको सेलेनियम जैसे हेडलेस ब्राउज़र की भी आवश्यकता हो सकती है।
चरण 2: अपने लक्ष्य वेब पेज की पहचान करें
अपने टूल सेट करने के बाद, उस वेब पेज की पहचान करें जिसे आप स्क्रैप करना चाहते हैं। वेबसाइट अवश्य पढ़ें robots.txt
उस साइट पर वेब स्क्रैपिंग के नियम जानने के लिए।
चरण 3: वेब स्क्रैपिंग दिशानिर्देशों को समझें
वेब स्क्रैपिंग की सर्वोत्तम प्रथाओं और कैप्चा या आईपी प्रतिबंध जैसी संभावित बाधाओं को समझना महत्वपूर्ण है। ऐसे मामलों में जहां आप ऐसी समस्याओं की आशंका रखते हैं, घूमने वाले प्रॉक्सी सर्वर का उपयोग करना फायदेमंद हो सकता है।
चरण 4: हेडर सेट करना
HTTP हेडर वास्तविक उपयोगकर्ता व्यवहार की नकल करने में मदद करते हैं। यह सुनिश्चित करने के लिए कि आपका स्क्रैपर ब्लॉक न हो जाए, इन्हें सही तरीके से सेट करें।
पायथन के एलएक्सएमएल के साथ वेब स्क्रैपिंग: एक चरण-दर-चरण ट्यूटोरियल
आवश्यक शर्तें
शुरुआत से पहले, आपको निम्नलिखित की आवश्यकता होगी:
- पायथन 3.x: सुनिश्चित करें कि आपके सिस्टम पर Python 3.x इंस्टॉल है। आप इसे यहाँ से डाउनलोड कर सकते हैं पायथन की आधिकारिक वेबसाइट.
- कोड संपादक: कोई भी टेक्स्ट एडिटर जो पायथन का समर्थन करता है, करेगा, हालांकि विजुअल स्टूडियो कोड, नोटपैड++, या पायचार्म जैसे उन्नत आईडीई डिबगिंग, सिंटैक्स हाइलाइटिंग और ऑटो-पूर्णता जैसी अधिक कार्यक्षमताएं प्रदान कर सकते हैं।
- अनुरोध और एलएक्सएमएल लाइब्रेरी: ये तृतीय-पक्ष पायथन लाइब्रेरी हैं जिनका उपयोग क्रमशः HTTP अनुरोधों और HTML पार्सिंग के लिए किया जाता है। स्थापित करने के लिए, अपना टर्मिनल खोलें और चलाएँ:
pip install requests lxml
1. अपना विकास वातावरण स्थापित करना
स्पष्टीकरण:
इस चरण में, आप अपने कोडिंग वातावरण को विकास के लिए तैयार करते हैं। अपने कंप्यूटर पर एक स्थान चुनें जहाँ आप अपनी स्क्रिप्ट सहेजना चाहेंगे।
- पायथन फ़ाइल बनाना: अपना कोड संपादक खोलें और नाम से एक नई पायथन फ़ाइल बनाएं
imdb_scraper.py
.
2. वेब पेज सामग्री प्राप्त करना
कोड:
import requests
url = "https://www.imdb.com/chart/moviemeter/"
response = requests.get(url)
if response.status_code == 200:
page_content = response.text
else:
print("Failed to retrieve the page")
स्पष्टीकरण:
इस अनुभाग में, आप IMDb के सबसे लोकप्रिय मूवी पेज की HTML सामग्री लाते हैं।
- आयात कर रहा है
requests
: दrequests
लाइब्रेरी का उपयोग HTTP अनुरोध करने के लिए किया जाता है। - सामग्री लायी जा रही है:
requests.get(url)
वेबपेज सामग्री लाता है और उसे इसमें संग्रहीत करता हैresponse
चर। - स्थिति कोड की जाँच: HTTP स्टेटस कोड (200 का मतलब ठीक है) की जांच करना एक अच्छा अभ्यास है। यदि यह 200 नहीं है, तो पृष्ठ लाने में समस्या है।
3. वेब पेज को पार्स करना
कोड:
from lxml import html
tree = html.fromstring(page_content)
स्पष्टीकरण:
यहां आप प्राप्त HTML सामग्री को खोजने योग्य ट्री संरचना में परिवर्तित करते हैं।
- आयात कर रहा है
lxml.html
: यह मॉड्यूल HTML सामग्री से ट्री संरचना बनाने में मदद करता है। - वृक्ष संरचना का निर्माण:
html.fromstring(page_content)
संग्रहीत HTML सामग्री को पार्स करता हैpage_content
और एक पेड़ जैसी संरचना उत्पन्न करता है जिसे आप वेरिएबल में संग्रहीत करते हैंtree
.
4. डेटा निकालना
कोड:
movie_titles = tree.xpath('//td[@class="titleColumn"]/a/text()')
imdb_ratings = tree.xpath('//td[@class="imdbRating"]/strong/text()')
स्पष्टीकरण:
अब जब आपके पास वेबपेज की पेड़ जैसी संरचना है, तो आप उसमें से डेटा खोज और निकाल सकते हैं।
- एक्सपाथ का उपयोग करना: XPath एक क्वेरी भाषा है जो XML दस्तावेज़ के माध्यम से नेविगेट कर सकती है। आप इसका उपयोग यहां उन तत्वों और विशेषताओं को निर्दिष्ट करने के लिए करते हैं जिन्हें आप स्क्रैप करना चाहते हैं।
- शीर्षक और रेटिंग निकालना: आप XPath क्वेरीज़ का उपयोग करके मूवी शीर्षक और IMDb रेटिंग एकत्र करते हैं जो HTML संरचना में उनके स्थान को इंगित करते हैं।
5. डेटा भंडारण
कोड:
for title, rating in zip(movie_titles, imdb_ratings):
print(f"Movie: {title}, Rating: {rating}")
स्पष्टीकरण:
अंततः, आप स्क्रैप किए गए डेटा को संग्रहीत या प्रदर्शित करना चाहेंगे।
- ज़िपिंग सूचियाँ: द
zip
फ़ंक्शन प्रत्येक मूवी शीर्षक को उसकी संबंधित रेटिंग के साथ जोड़ता है। - डेटा मुद्रण: इस उदाहरण में, हम बस प्रत्येक जोड़ी का प्रिंट आउट लेते हैं। वास्तविक दुनिया के एप्लिकेशन में, आप इस डेटा को डेटाबेस या फ़ाइल में संग्रहीत करना चाह सकते हैं।
पूर्ण कोड उदाहरण
# Importing required libraries
import requests
from lxml import html
# Step 2: Fetch Web Page Content
url = "https://www.imdb.com/chart/moviemeter/"
response = requests.get(url)
if response.status_code == 200:
page_content = response.text
else:
print("Failed to retrieve the page")
# Step 3: Parse the Web Page
tree = html.fromstring(page_content)
# Step 4: Extract Data
movie_titles = tree.xpath('//td[@class="titleColumn"]/a/text()')
imdb_ratings = tree.xpath('//td[@class="imdbRating"]/strong/text()')
# Step 5: Store and/or Output Data
for title, rating in zip(movie_titles, imdb_ratings):
print(f"Movie: {title}, Rating: {rating}")
इस विस्तारित और विस्तृत ट्यूटोरियल का अनुसरण करके, आपको आईएमडीबी से सबसे लोकप्रिय फिल्मों के बारे में आत्मविश्वास से जानकारी प्राप्त करने में सक्षम होना चाहिए। हमेशा की तरह, जिस भी वेबसाइट को आप स्क्रैप कर रहे हैं उसकी सेवा की शर्तों का सम्मान करना महत्वपूर्ण है।
अंतिम टिप्पणी
वेब स्क्रैपिंग एक जटिल प्रक्रिया हो सकती है, लेकिन पायथन की एलएक्सएमएल लाइब्रेरी कई जटिलताओं को सरल बनाती है। सही टूल, सर्वोत्तम प्रथाओं के ज्ञान और एक अच्छी तरह से परिभाषित रणनीति के साथ, आप अपने वेब स्क्रैपिंग प्रयासों को कुशल और सफल बना सकते हैं। इस ट्यूटोरियल का उद्देश्य इन पहलुओं को व्यापक रूप से कवर करना है। हैप्पी स्क्रैपिंग!