इस लेख में, हम एक प्रोग्राम बनाएंगे जो आपको पायथन स्क्रिप्ट वाली वेबसाइट से डेटा को परिमार्जन या हड़पने की अनुमति देता है। डेटा एकत्र करने की इस विधि को वेब स्क्रैपिंग कहा जाता है।
वेब स्क्रैपिंग एक वेब पेज से डेटा को डाउनलोड करने, साफ करने और उपयोग करने के लिए प्रोग्रामेटिक रूप से पायथन या किसी अन्य प्रोग्रामिंग भाषा का उपयोग करने के बारे में है। अधिकांश वेबसाइटें नहीं चाहतीं कि आप उनके डेटा को स्क्रैप करें, और यह पता लगाने के लिए कि स्क्रैपिंग के लिए कानूनी और अनुमत क्या है, वेबसाइटों के पास एक समर्पित पृष्ठ है जो अनुमत अंतिम बिंदुओं का विवरण दिखाता है।
अनुमत अंतिम बिंदुओं के बारे में जानने के लिए किसी भी लिंक के अंत में robots.txt संलग्न करें। उदाहरण के लिए, आइए https://news.ycombinator.com/robots.txt का उपयोग करें।
परिणाम नीचे इस पाठ फ़ाइल के साथ इस तरह दिखना चाहिए:
स्क्रीनशॉट बताता है कि वाईकॉम्बिनेटर वेबसाइट से हमें किन समापन बिंदुओं की अनुमति है और परिमार्जन करने की अनुमति नहीं है। क्रॉल विलंब का अर्थ है प्रोग्राम के साथ वेबसाइट से डेटा स्क्रैप करते समय एक विराम, जिससे उनके सर्वर ओवरलोड नहीं होते हैं और लगातार स्क्रैपिंग के कारण वेबसाइट को धीमा कर देते हैं।
इस अभ्यास में, हम समाचार सामग्री के होम पेज को स्क्रैप करते हैं, जो हम उपयोगकर्ता एजेंट के अनुसार कर सकते हैं।
शुरू करना
पायथन वेब स्क्रैपर को डेटा स्क्रैप करने के लिए दो आवश्यक मॉड्यूल की आवश्यकता होती है:
- सुंदर सूप
- अनुरोध
सुंदर सूप
सुंदर सूप HTML फ़ाइलों से डेटा निकालने के लिए एक पायथन लाइब्रेरी है। यह एक पार्सर का उपयोग करके फ़ाइल को संशोधित करता है, डेटा को एक मूल्यवान दस्तावेज़ में बदल देता है, और प्रोग्रामर के मैनुअल और दोहराव के काम के घंटे बचाता है।
अनुरोध
अनुरोध HTTP पुस्तकालय वेबसाइट के लिंक का उपयोग करके HTML फ़ाइलों को डाउनलोड करने के लिए है
.get()
समारोह।एक वेब स्क्रैपर बनाना
अब इस परियोजना की बारीकियों के बारे में। एक नई निर्देशिका बनाएं, और वहां, एक फ़ाइल जिसमें वेब स्क्रैपर प्रोग्राम के लिए सभी स्क्रिप्ट शामिल होंगी।
निम्नलिखित कोड को कॉपी और पेस्ट करें:
# app.py import requests response = requests.get( 'https://news.ycombinator.com/news' ) yc_web_page = response.text print(yc_web_page)
उपरोक्त कोड निम्न कार्य करता है:
- आयात कर रहा है
requests
- प्रतिक्रिया चर का उपयोग करते हुए, अनुरोध संलग्न हैं
.get()
- के साथ वेब पेज की सामग्री को पढ़ना
.text
यदि आप इस कोड को कमांड के साथ चलाते हैं python
app.py
और यह आपको कोई आउटपुट नहीं देता है, इसका मतलब है कि दो आयातित मॉड्यूल को स्थापित करने की आवश्यकता है।मॉड्यूल स्थापित करने के लिए निम्न आदेश चलाएँ।
pip3 install requests pip install beautifulsoup4
स्रोत कोड का परिणाम इस तरह दिखना चाहिए:
अगला, आइए अपडेट करें
app.py
सुंदर सूप का उपयोग करके शेष कोड के साथ फ़ाइल करें: # main.py import requests from bs4 import BeautifulSoup # add this
response = requests.get( 'https://news.ycombinator.com/news' ) yc_web_page = response.text # add this
soup = BeautifulSoup(yc_web_page, 'html.parser' ) article_tag = soup.find(name= "a" , class_= 'titlelink' ) article_title = article_tag.get_text() article_link = article_tag.get( 'href' ) article_upvote = soup.find(name= "span" , class_= "score" ).get_text() result = { "title" : article_title, "link" : article_link, "point" : article_upvote } print(result)
निम्नलिखित करके ऊपर दिए गए कोड स्निपेट का पालन करें ::
- मॉड्यूल bs4 से सुंदर सूप फ़ंक्शन आयात करें
- इसके बाद, दस्तावेज़ को पार्स करने के लिए वेरिएबल सूप का उपयोग करें
yc_web_page
html.parser
शेष कोड पर जाने से पहले, आइए हमारे वेब ब्राउज़र में दिए गए लिंक के साथ खोलें
.get()
इसके बाद, पृष्ठ पर राइट-क्लिक करें, और YCombinator समाचार पृष्ठ के तत्व टैब को देखने के लिए निरीक्षण पर क्लिक करें।
हमारा वेब पेज इस तरह दिखना चाहिए:
सुंदर सूप के साथ, हम पृष्ठ पर विशिष्ट तत्वों को उनके वर्ग नामों से लक्षित कर सकते हैं:
- article_tag वेरिएबल निर्दिष्ट करके, प्रत्येक पृष्ठ तत्व का एक टैग नाम होता है, जो का उपयोग करता है
find()
class_
- अब, हम के लिंक शीर्षकों में से एक को निकालना चाहते हैं
article_tag
.get_text()
- इसके बाद, का लिंक निकालें
article_tag
href
.get()
- वही पर लागू होता है
article_upvote
<span>
- एक चर परिणाम बनाएं जो निकाले गए डेटा को कुंजी और मूल्य जोड़ी के साथ एक शब्दकोश के रूप में प्रदर्शित करेगा
- अंतिम परिणाम का प्रिंट आउट लें
पूरी स्क्रिप्ट लिखे जाने के बाद, हमारे पेज को YCombinator के न्यूज होम पेज से डेटा को परिमार्जन करना चाहिए और इस तरह दिखना चाहिए:
निष्कर्ष
इस लेख ने आपको सिखाया कि वेब पेज से डेटा निकालने के लिए पायथन वेब स्क्रैपर का उपयोग कैसे करें।
इसके अलावा, वेब स्क्रैपर का उपयोग करने की कार्यक्षमता यह है कि यह बड़े डेटा सेट को मैन्युअल रूप से बनाने के बजाय तेजी से बनाने में समय और प्रयास बचाता है।