वेबसाइट से जानकारी खींचने के लिए एक बेसिक वेब क्रॉलर कैसे बनाएं

वेबसाइट से जानकारी खींचने के लिए एक बेसिक वेब क्रॉलर कैसे बनाएं

वेबसाइटों, या वेब क्रॉलर से जानकारी पढ़ने वाले प्रोग्राम में सभी प्रकार के उपयोगी एप्लिकेशन होते हैं। आप स्टॉक की जानकारी, स्पोर्ट्स स्कोर, ट्विटर अकाउंट से टेक्स्ट के लिए स्क्रैप कर सकते हैं या शॉपिंग वेबसाइटों से कीमतों को खींच सकते हैं।





इन वेब क्रॉलिंग प्रोग्रामों को लिखना आपके विचार से आसान है। वेबसाइटों से जानकारी निकालने वाली स्क्रिप्ट लिखने के लिए पायथन के पास एक महान पुस्तकालय है। आइए देखें कि स्क्रेपी का उपयोग करके वेब क्रॉलर कैसे बनाया जाता है।





स्क्रैपी स्थापित करना

स्क्रैपी एक पायथन लाइब्रेरी है जिसे वेब को स्क्रैप करने और वेब क्रॉलर बनाने के लिए बनाया गया था। यह तेज़, सरल है, और बिना अधिक प्रयास के कई वेब पेजों के माध्यम से नेविगेट कर सकता है।





स्क्रेपी पिप इंस्टाल पायथन (पीआईपी) पुस्तकालय के माध्यम से उपलब्ध है, यहां पर एक पुनश्चर्या है विंडोज, मैक और लिनक्स पर पीआईपी कैसे स्थापित करें .

पायथन वर्चुअल एनवायरनमेंट का उपयोग करना पसंद किया जाता है क्योंकि यह आपको एक वर्चुअल डायरेक्टरी में स्क्रेपी को स्थापित करने की अनुमति देगा जो आपकी सिस्टम फाइलों को अकेला छोड़ देता है। स्क्रेपी का दस्तावेज़ीकरण सर्वोत्तम परिणाम प्राप्त करने के लिए ऐसा करने की अनुशंसा करता है।



एक निर्देशिका बनाएं और वर्चुअल वातावरण प्रारंभ करें।

विंडोज़ 7 बनाम विंडोज़ 10 2018
mkdir crawler
cd crawler
virtualenv venv
. venv/bin/activate

अब आप PIP कमांड का उपयोग करके उस निर्देशिका में Scrapy स्थापित कर सकते हैं।





pip install scrapy

यह सुनिश्चित करने के लिए एक त्वरित जाँच करें कि Scrapy ठीक से स्थापित है

scrapy
# prints
Scrapy 1.4.0 - no active project
Usage:
scrapy [options] [args]
Available commands:
bench Run quick benchmark test
fetch Fetch a URL using the Scrapy downloader
genspider Generate new spider using pre-defined templates
runspider Run a self-contained spider (without creating a project)
...

वेब क्रॉलर कैसे बनाएं

अब जब वातावरण तैयार हो गया है तो आप वेब क्रॉलर बनाना शुरू कर सकते हैं। आइए बैटरी पर विकिपीडिया पृष्ठ से कुछ जानकारी निकालें: https://en.wikipedia.org/wiki/Battery_(electricity) .





क्रॉलर लिखने का पहला चरण एक पायथन वर्ग को परिभाषित करना है जो से विस्तारित होता है स्क्रेपी.स्पाइडर . यह आपको स्क्रेपी के सभी कार्यों और सुविधाओं तक पहुंच प्रदान करता है। आइए इस वर्ग को कॉल करें मकड़ी1 .

एक मकड़ी वर्ग को कुछ जानकारी की आवश्यकता होती है:

  • प्रति नाम मकड़ी की पहचान के लिए
  • प्रति start_urls वेरिएबल जिसमें क्रॉल करने के लिए यूआरएल की सूची है (विकिपीडिया यूआरएल इस ट्यूटोरियल में उदाहरण होगा)
  • प्रति पार्स () जानकारी निकालने के लिए वेबपेज को संसाधित करने के लिए उपयोग की जाने वाली विधि
import scrapy
class spider1(scrapy.Spider):
name = 'Wikipedia'
start_urls = ['https://en.wikipedia.org/wiki/Battery_(electricity)']
def parse(self, response):
pass

सब कुछ ठीक से चल रहा है यह सुनिश्चित करने के लिए एक त्वरित परीक्षण।

scrapy runspider spider1.py
# prints
2017-11-23 09:09:21 [scrapy.utils.log] INFO: Scrapy 1.4.0 started (bot: scrapybot)
2017-11-23 09:09:21 [scrapy.utils.log] INFO: Overridden settings: {'SPIDER_LOADER_WARN_ONLY': True}
2017-11-23 09:09:21 [scrapy.middleware] INFO: Enabled extensions:
['scrapy.extensions.memusage.MemoryUsage',
'scrapy.extensions.logstats.LogStats',
...

लॉगिंग बंद करना

इस वर्ग के साथ स्क्रैपी चलाना लॉग जानकारी को प्रिंट करता है जो अभी आपकी मदद नहीं करेगा। आइए इस अतिरिक्त लॉग जानकारी को हटाकर इसे सरल बनाते हैं। का उपयोग चेतावनी फ़ाइल की शुरुआत में कोड जोड़कर कथन।

import logging
logging.getLogger('scrapy').setLevel(logging.WARNING)

अब जब आप स्क्रिप्ट को दोबारा चलाते हैं, तो लॉग जानकारी प्रिंट नहीं होगी।

क्रोम इंस्पेक्टर का उपयोग करना

वेब पेज पर सब कुछ HTML तत्वों में संग्रहीत होता है। तत्वों को दस्तावेज़ ऑब्जेक्ट मॉडल (डीओएम) में व्यवस्थित किया गया है। अपने वेब क्रॉलर का अधिकतम लाभ उठाने के लिए DOM को समझना महत्वपूर्ण है। एक वेब क्रॉलर जानकारी खोजने के लिए एक पृष्ठ पर सभी HTML तत्वों की खोज करता है, इसलिए यह जानना महत्वपूर्ण है कि उन्हें कैसे व्यवस्थित किया गया है।

Google Chrome में ऐसे टूल हैं जो HTML तत्वों को तेज़ी से ढूंढने में आपकी सहायता करते हैं। आप निरीक्षक का उपयोग करके वेब पेज पर देखे जाने वाले किसी भी तत्व के लिए HTML का पता लगा सकते हैं।

  • Chrome में किसी पृष्ठ पर नेविगेट करें
  • माउस को उस तत्व पर रखें जिसे आप देखना चाहते हैं
  • राइट-क्लिक करें और चुनें निरीक्षण मेनू से

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

शीर्षक निकालना

हमारे लिए कुछ काम करने के लिए स्क्रिप्ट प्राप्त करें; वेब पेज का शीर्षक टेक्स्ट प्राप्त करने के लिए एक सरल क्रॉल।

में कुछ कोड जोड़कर स्क्रिप्ट प्रारंभ करें पार्स () विधि जो शीर्षक निकालती है।

...
def parse(self, response):
print response.css('h1#firstHeading::text').extract()
...

NS प्रतिक्रिया तर्क नामक एक विधि का समर्थन करता है सीएसएस () जो आपके द्वारा प्रदान किए गए स्थान का उपयोग करके पृष्ठ से तत्वों का चयन करता है।

इस उदाहरण में, तत्व है h1.प्रथमशीर्षक . जोड़ा जा रहा है

::text

स्क्रिप्ट के लिए वह है जो आपको तत्व की पाठ्य सामग्री देता है। अंततः निचोड़() विधि चयनित तत्व लौटाती है।

इस स्क्रिप्ट को स्क्रेपी में चलाने से शीर्षक टेक्स्ट फॉर्म में प्रिंट हो जाता है।

[u'Battery (electricity)']

विवरण ढूँढना

अब जबकि हमने शीर्षक टेक्स्ट को स्क्रैप कर दिया है, आइए स्क्रिप्ट के साथ और अधिक करते हैं। क्रॉलर शीर्षक के बाद पहला पैराग्राफ ढूंढेगा और इस जानकारी को निकालेगा।

यहां क्रोम डेवलपर कंसोल में एलिमेंट ट्री है:

पुराने ड्राइवरों की जांच कैसे करें
div#mw-content-text>div>p

दायां तीर (>) तत्वों के बीच अभिभावक-बाल संबंध को इंगित करता है।

यह स्थान सभी को लौटा देगा पी तत्वों का मिलान हुआ, जिसमें संपूर्ण विवरण शामिल है। पहला पाने के लिए पी तत्व आप यह कोड लिख सकते हैं:

response.css('div#mw-content-text>div>p')[0]

शीर्षक की तरह ही, आप CSS एक्सट्रैक्टर जोड़ें

::text

तत्व की पाठ सामग्री प्राप्त करने के लिए।

response.css('div#mw-content-text>div>p')[0].css('::text')

अंतिम अभिव्यक्ति का उपयोग करता है निचोड़() सूची वापस करने के लिए। आप पायथन का उपयोग कर सकते हैं शामिल हों () सभी क्रॉलिंग पूर्ण होने के बाद सूची में शामिल होने के लिए कार्य करें।

def parse(self, response):
print ''.join(response.css('div#mw-content-text>div>p')[0].css('::text').extract())

परिणाम पाठ का पहला पैराग्राफ है!

An electric battery is a device consisting of one or more electrochemical cells with external connections provided to power electrical devices such as flashlights, smartphones, and electric cars.[1] When a battery is supplying electric power, its positive terminal is
...

JSON डेटा एकत्रित करना

स्क्रेपी टेक्स्ट फॉर्म में जानकारी निकाल सकता है, जो उपयोगी है। स्क्रेपी आपको जावास्क्रिप्ट ऑब्जेक्ट नोटेशन (JSON) डेटा देखने की सुविधा भी देता है। JSON सूचनाओं को व्यवस्थित करने का एक साफ-सुथरा तरीका है और इसका व्यापक रूप से वेब विकास में उपयोग किया जाता है। JSON Python के साथ बहुत अच्छी तरह से काम करता है भी।

जब आपको JSON के रूप में डेटा एकत्र करने की आवश्यकता होती है, तो आप इसका उपयोग कर सकते हैं उपज स्क्रेपी में निर्मित बयान।

उपज विवरण का उपयोग करके स्क्रिप्ट का एक नया संस्करण यहां दिया गया है। पाठ प्रारूप में पहला p तत्व प्राप्त करने के बजाय, यह सभी p तत्वों को पकड़ लेगा और इसे JSON प्रारूप में व्यवस्थित करेगा।

क्या ब्लूटूथ हवाई जहाज मोड में काम करता है
...
def parse(self, response):
for e in response.css('div#mw-content-text>div>p'):
yield { 'para' : ''.join(e.css('::text').extract()).strip() }
...

अब आप आउटपुट JSON फ़ाइल निर्दिष्ट करके स्पाइडर चला सकते हैं:

scrapy runspider spider3.py -o joe.json

स्क्रिप्ट अब सभी p तत्वों को प्रिंट करेगी।

[
{'para': 'An electric battery is a device consisting of one or more electrochemical cells with external connections provided to power electrical devices such as flashlights, smartphones, and electric cars.[1] When a battery is supplying electric power, its positive terminal is the cathode and its negative terminal is the anode.[2] The terminal marked negative is the source of electrons that when connected to an external circuit will flow and deliver energy to an external device. When a battery is connected to an external circuit, electrolytes are able to move as ions within, allowing the chemical reactions to be completed at the separate terminals and so deliver energy to the external circuit. It is the movement of those ions within the battery which allows current to flow out of the battery to perform work.[3] Historically the term 'battery' specifically referred to a device composed of multiple cells, however the usage has evolved additionally to include devices composed of a single cell.[4]'},
{'para': 'Primary (single-use or 'disposable') batteries are used once and discarded; the electrode materials are irreversibly changed during discharge. Common examples are the alkaline battery used for flashlights and a multitude of portable electronic devices. Secondary (rechargeable) batteries can be discharged and recharged multiple
...

एकाधिक तत्वों को स्क्रैप करना

अब तक वेब क्रॉलर ने पृष्ठ से शीर्षक और एक प्रकार के तत्व को स्क्रैप कर दिया है। स्क्रेपी एक स्क्रिप्ट में विभिन्न प्रकार के तत्वों से जानकारी भी निकाल सकता है।

आइए एक सप्ताहांत के लिए IMDb बॉक्स ऑफिस की शीर्ष हिट्स को निकालें। यह जानकारी से खींची गई है http://www.imdb.com/chart/boxoffice , प्रत्येक मीट्रिक के लिए पंक्तियों वाली तालिका में.

NS पार्स () विधि पंक्ति से एक से अधिक फ़ील्ड निकाल सकती है। क्रोम डेवलपर टूल्स का उपयोग करके आप टेबल के अंदर नेस्टेड तत्वों को ढूंढ सकते हैं।

...
def parse(self, response):
for e in response.css('div#boxoffice>table>tbody>tr'):
yield {
'title': ''.join(e.css('td.titleColumn>a::text').extract()).strip(),
'weekend': ''.join(e.css('td.ratingColumn')[0].css('::text').extract()).strip(),
'gross': ''.join(e.css('td.ratingColumn')[1].css('span.secondaryInfo::text').extract()).strip(),
'weeks': ''.join(e.css('td.weeksColumn::text').extract()).strip(),
'image': e.css('td.posterColumn img::attr(src)').extract_first(),
}
...

NS छवि चयनकर्ता निर्दिष्ट करता है कि आईएमजी का वंशज है टीडी.पोस्टर कॉलम . सही विशेषता निकालने के लिए, अभिव्यक्ति |_+_| का उपयोग करें।

स्पाइडर चलाना JSON लौटाता है:

::attr(src)

अधिक वेब स्क्रैपर्स और बॉट्स

स्क्रेपी एक विस्तृत पुस्तकालय है जो आपके द्वारा पूछे जाने वाले किसी भी प्रकार के वेब क्रॉलिंग के बारे में कर सकता है। जब पाइथन के समर्थन के साथ संयुक्त HTML तत्वों में जानकारी खोजने की बात आती है, तो इसे हरा पाना मुश्किल होता है। चाहे आप एक वेब क्रॉलर बना रहे हों या वेब स्क्रैपिंग की मूल बातें सीख रहे हों, केवल यही सीमा है कि आप कितना सीखने को तैयार हैं।

यदि आप क्रॉलर या बॉट बनाने के और तरीके खोज रहे हैं तो आप कोशिश कर सकते हैं पायथन का उपयोग करके ट्विटर और इंस्टाग्राम बॉट बनाएं . पायथन वेब विकास में कुछ अद्भुत चीजें बना सकता है, इसलिए इस भाषा की खोज करते समय वेब क्रॉलर से आगे जाना उचित है।

साझा करना साझा करना कलरव ईमेल 15 विंडोज़ कमांड प्रॉम्प्ट (सीएमडी) कमांड जो आपको अवश्य जानना चाहिए

कमांड प्रॉम्प्ट अभी भी एक शक्तिशाली विंडोज टूल है। यहां सबसे उपयोगी सीएमडी कमांड हैं जिन्हें हर विंडोज उपयोगकर्ता को जानना आवश्यक है।

आगे पढ़िए
संबंधित विषय
  • प्रोग्रामिंग
  • वेबमास्टर उपकरण
  • प्रोग्रामिंग
  • अजगर
  • कोडिंग ट्यूटोरियल
  • वेब क्रॉलर
लेखक के बारे में एंथोनी ग्रांट(40 लेख प्रकाशित)

एंथनी ग्रांट प्रोग्रामिंग और सॉफ्टवेयर को कवर करने वाला एक स्वतंत्र लेखक है। वह प्रोग्रामिंग, एक्सेल, सॉफ्टवेयर और टेक्नोलॉजी में कंप्यूटर साइंस के प्रमुख हैं।

एंथनी ग्रांट . की अन्य फ़िल्में-टीवी शो

हमारे न्यूज़लेटर की सदस्यता लें

तकनीकी युक्तियों, समीक्षाओं, निःशुल्क ई-पुस्तकों और अनन्य सौदों के लिए हमारे न्यूज़लेटर से जुड़ें!

सब्सक्राइब करने के लिए यहां क्लिक करें