paint-brush
पायथन वेब स्क्रैपर कैसे बनाएं: किसी भी वेबसाइट से डेटा स्क्रैप करेंद्वारा@terieyenike
8,579 रीडिंग
8,579 रीडिंग

पायथन वेब स्क्रैपर कैसे बनाएं: किसी भी वेबसाइट से डेटा स्क्रैप करें

द्वारा Teri4m2022/09/08
Read on Terminal Reader
Read this story w/o Javascript

बहुत लंबा; पढ़ने के लिए

Python आपको Python स्क्रिप्ट वाली वेबसाइट से डेटा को परिमार्जन या हड़पने की अनुमति देता है। डेटा एकत्र करने की इस पद्धति को वेब स्क्रैपिंग कहा जाता है। अधिकांश वेबसाइटें नहीं चाहतीं कि आप उनके डेटा को स्क्रैप करें, और यह पता लगाने के लिए कि स्क्रैपिंग के लिए कानूनी और अनुमेय क्या है, वेबसाइटों के पास एक समर्पित पृष्ठ है जो अनुमत समापन बिंदुओं का विवरण दिखाता है। इस अभ्यास में, हम समाचार सामग्री के होम पेज को स्क्रैप करते हैं, जो हम उपयोगकर्ता एजेंट के अनुसार कर सकते हैं। पूरी स्क्रिप्ट लिखे जाने के साथ, हमारे पेज को YCombinator के न्यूज होम पेज से डेटा को स्क्रैप करना चाहिए।
featured image - पायथन वेब स्क्रैपर कैसे बनाएं: किसी भी वेबसाइट से डेटा स्क्रैप करें
Teri HackerNoon profile picture

इस लेख में, हम एक प्रोग्राम बनाएंगे जो आपको पायथन स्क्रिप्ट वाली वेबसाइट से डेटा को परिमार्जन या हड़पने की अनुमति देता है। डेटा एकत्र करने की इस विधि को वेब स्क्रैपिंग कहा जाता है।

वेब स्क्रैपिंग एक वेब पेज से डेटा को डाउनलोड करने, साफ करने और उपयोग करने के लिए प्रोग्रामेटिक रूप से पायथन या किसी अन्य प्रोग्रामिंग भाषा का उपयोग करने के बारे में है। अधिकांश वेबसाइटें नहीं चाहतीं कि आप उनके डेटा को स्क्रैप करें, और यह पता लगाने के लिए कि स्क्रैपिंग के लिए कानूनी और अनुमत क्या है, वेबसाइटों के पास एक समर्पित पृष्ठ है जो अनुमत अंतिम बिंदुओं का विवरण दिखाता है।

अनुमत अंतिम बिंदुओं के बारे में जानने के लिए किसी भी लिंक के अंत में 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()
    फ़ंक्शन प्रदान की गई वेबसाइट के लिंक से HTML फ़ाइलों को डाउनलोड करें
  • के साथ वेब पेज की सामग्री को पढ़ना
     .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
    HTML फ़ाइलें प्राप्त करने के लिए

शेष कोड पर जाने से पहले, आइए हमारे वेब ब्राउज़र में दिए गए लिंक के साथ खोलें

 .get()

इसके बाद, पृष्ठ पर राइट-क्लिक करें, और YCombinator समाचार पृष्ठ के तत्व टैब को देखने के लिए निरीक्षण पर क्लिक करें।

हमारा वेब पेज इस तरह दिखना चाहिए:

सुंदर सूप के साथ, हम पृष्ठ पर विशिष्ट तत्वों को उनके वर्ग नामों से लक्षित कर सकते हैं:

  • article_tag वेरिएबल निर्दिष्ट करके, प्रत्येक पृष्ठ तत्व का एक टैग नाम होता है, जो का उपयोग करता है
     find()
    तत्व के नाम के साथ कार्य करें, a टैग, और the
     class_
    एक अंडरस्कोर के साथ। यह वेब पेज पर तत्व में वर्ग के ओवरराइट को रोकने के लिए किया जाता है
  • अब, हम के लिंक शीर्षकों में से एक को निकालना चाहते हैं
     article_tag
    का उपयोग
     .get_text()
    समारोह
  • इसके बाद, का लिंक निकालें
     article_tag
    विशेषता का उपयोग करना
     href
    साथ
     .get()
    समारोह
  • वही पर लागू होता है
     article_upvote
    वेरिएबल, जहां टैग नाम,
     <span>
    , और प्रत्येक लेख लिंक के लिए अंक निकालने के लिए वर्ग नाम का उपयोग किया जाता है
  • एक चर परिणाम बनाएं जो निकाले गए डेटा को कुंजी और मूल्य जोड़ी के साथ एक शब्दकोश के रूप में प्रदर्शित करेगा
  • अंतिम परिणाम का प्रिंट आउट लें

पूरी स्क्रिप्ट लिखे जाने के बाद, हमारे पेज को YCombinator के न्यूज होम पेज से डेटा को परिमार्जन करना चाहिए और इस तरह दिखना चाहिए:

निष्कर्ष

इस लेख ने आपको सिखाया कि वेब पेज से डेटा निकालने के लिए पायथन वेब स्क्रैपर का उपयोग कैसे करें।

इसके अलावा, वेब स्क्रैपर का उपयोग करने की कार्यक्षमता यह है कि यह बड़े डेटा सेट को मैन्युअल रूप से बनाने के बजाय तेजी से बनाने में समय और प्रयास बचाता है।

और अधिक जानें