کسی ویب سائٹ سے معلومات حاصل کرنے کے لیے ایک بنیادی ویب کرالر کیسے بنایا جائے۔

کسی ویب سائٹ سے معلومات حاصل کرنے کے لیے ایک بنیادی ویب کرالر کیسے بنایا جائے۔

وہ پروگرام جو ویب سائٹس ، یا ویب کرالرز سے معلومات پڑھتے ہیں ، ان میں ہر قسم کی مفید ایپلی کیشنز ہوتی ہیں۔ آپ اسٹاک کی معلومات ، کھیلوں کے اسکور ، ٹویٹر اکاؤنٹ سے ٹیکسٹ ، یا شاپنگ ویب سائٹس سے قیمتیں نکال سکتے ہیں۔





ان ویب کرالنگ پروگراموں کو لکھنا آپ کے خیال سے کہیں زیادہ آسان ہے۔ ازگر کے پاس سکرپٹ لکھنے کے لیے ایک بڑی لائبریری ہے جو ویب سائٹس سے معلومات نکالتی ہے۔ آئیے دیکھتے ہیں کہ سکریپی کا استعمال کرتے ہوئے ویب کرالر کیسے بنایا جائے۔





سکریپی انسٹال کرنا۔

سکریپی ایک ازگر لائبریری ہے جو ویب کو کھرچنے اور ویب کرالر بنانے کے لیے بنائی گئی تھی۔ یہ تیز ، آسان ہے ، اور بغیر کسی کوشش کے متعدد ویب صفحات پر تشریف لے جا سکتا ہے۔





سکریپی پائپ انسٹال ازگر (PIP) لائبریری کے ذریعے دستیاب ہے ، یہاں ایک ریفریشر ہے۔ ونڈوز ، میک اور لینکس پر پی آئی پی انسٹال کرنے کا طریقہ .

ازگر ورچوئل انوائرمنٹ کا استعمال بہتر ہے کیونکہ یہ آپ کو ورچوئل ڈائرکٹری میں سکریپی انسٹال کرنے کی اجازت دیتا ہے جو آپ کے سسٹم کی فائلوں کو تنہا چھوڑ دیتی ہے۔ سکریپی کی دستاویزات بہترین نتائج حاصل کرنے کے لیے ایسا کرنے کی سفارش کرتی ہیں۔



ایک ڈائریکٹری بنائیں اور ورچوئل ماحول کو شروع کریں۔

آئی فون پر چارجنگ کی آواز کو کیسے تبدیل کیا جائے۔
mkdir crawler
cd crawler
virtualenv venv
. venv/bin/activate

اب آپ پی آئی پی کمانڈ کا استعمال کرتے ہوئے اس ڈائرکٹری میں سکریپی انسٹال کرسکتے ہیں۔





pip install 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) میں ترتیب دیا گیا ہے۔ DOM کو سمجھنا آپ کے ویب کرالر سے زیادہ سے زیادہ فائدہ اٹھانا ضروری ہے۔ ایک ویب کرالر معلومات تلاش کرنے کے لیے ایک صفحے پر موجود تمام HTML عناصر کے ذریعے تلاش کرتا ہے ، لہذا یہ جاننا ضروری ہے کہ ان کا اہتمام کیسے کیا جاتا ہے۔

گوگل کروم کے پاس ایسے ٹولز ہیں جو HTML عناصر کو تیزی سے تلاش کرنے میں آپ کی مدد کرتے ہیں۔ آپ انسپکٹر کا استعمال کرتے ہوئے ویب پیج پر کسی بھی عنصر کے لیے HTML تلاش کر سکتے ہیں۔

  • کروم میں کسی صفحے پر جائیں۔
  • ماؤس کو اس عنصر پر رکھیں جسے آپ دیکھنا چاہتے ہیں۔
  • دائیں کلک کریں اور منتخب کریں۔ معائنہ کریں۔ مینو سے

یہ اقدامات ڈویلپر کنسول کے ساتھ کھولیں گے عناصر ٹیب منتخب کیا گیا۔ کنسول کے نچلے حصے میں ، آپ کو عناصر کا ایک درخت نظر آئے گا۔ یہ درخت ہے کہ آپ اپنے سکرپٹ کے لیے معلومات کیسے حاصل کریں گے۔

عنوان نکالنا۔

آئیے ہمارے لیے کچھ کام کرنے کے لیے اسکرپٹ حاصل کریں۔ ویب پیج کا ٹائٹل ٹیکسٹ حاصل کرنے کے لیے ایک آسان کرال۔

میں کچھ کوڈ شامل کرکے اسکرپٹ شروع کریں۔ تجزیہ () طریقہ جو عنوان نکالتا ہے۔

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

کی جواب دلیل نامی طریقہ کی حمایت کرتی ہے۔ سی ایس ایس () جو آپ کے فراہم کردہ مقام کا استعمال کرتے ہوئے صفحے سے عناصر کو منتخب کرتا ہے۔

اس مثال میں ، عنصر ہے۔ h1.firstHeading . شامل کرنا۔

::text

اسکرپٹ میں وہی ہے جو آپ کو عنصر کا متن مواد فراہم کرتا ہے۔ آخر میں ، نکالنا () طریقہ منتخب کردہ عنصر کو لوٹاتا ہے۔

اس سکرپٹ کو سکریپی میں چلانا عنوان کو متن کی شکل میں پرنٹ کرتا ہے۔

[u'Battery (electricity)']

تفصیل تلاش کرنا۔

اب جب کہ ہم نے ٹائٹل ٹیکسٹ کو ختم کر دیا ہے آئیے اسکرپٹ کے ساتھ مزید کام کرتے ہیں۔ کرالر عنوان کے بعد پہلا پیراگراف ڈھونڈ کر یہ معلومات نکالے گا۔

کروم ڈویلپر کنسول میں عنصر کا درخت یہ ہے:

میں ایپس کو اپنے ایس ڈی کارڈ میں کیسے منتقل کروں؟
div#mw-content-text>div>p

دائیں تیر (>) عناصر کے درمیان والدین اور بچے کے تعلقات کی نشاندہی کرتا ہے۔

یہ مقام تمام کو واپس کر دے گا۔ p مماثل عناصر ، جس میں پوری تفصیل شامل ہے۔ پہلا حاصل کرنے کے لیے۔ 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 ازگر کے ساتھ بہت اچھی طرح کام کرتا ہے۔ اس کے ساتھ ساتھ.

جب آپ کو 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
...

ایک سے زیادہ عناصر کو سکریپ کرنا۔

اب تک ویب کرالر نے صفحہ سے عنوان اور ایک قسم کا عنصر ختم کر دیا ہے۔ سکریپی ایک سکرپٹ میں مختلف اقسام کے عناصر سے معلومات بھی نکال سکتی ہے۔

آئیے ایک ویک اینڈ کے لیے آئی ایم ڈی بی باکس آفس کی ٹاپ ہٹس نکالیں۔ یہ معلومات اس سے لی گئی ہیں۔ http://www.imdb.com/chart/boxoffice۔ ، ہر ایک میٹرک کے لیے قطاروں والی میز میں۔

کی تجزیہ () طریقہ صف سے ایک سے زیادہ فیلڈ نکال سکتا ہے۔ کروم ڈویلپر ٹولز کا استعمال کرتے ہوئے آپ ٹیبل کے اندر موجود عناصر کو تلاش کرسکتے ہیں۔

...
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(),
}
...

کی تصویر سلیکٹر اس کی وضاحت کرتا ہے۔ img کی اولاد ہے td.posterColumn . صحیح وصف نکالنے کے لیے ، اظہار | _+_ | استعمال کریں۔

مکڑی چلانے سے JSON لوٹتا ہے:

::attr(src)

مزید ویب سکریپرز اور بوٹس۔

سکریپی ایک تفصیلی لائبریری ہے جو کسی بھی قسم کی ویب کرالنگ کے بارے میں کر سکتی ہے جو آپ اس سے پوچھتے ہیں۔ جب ایچ ٹی ایم ایل عناصر میں معلومات ڈھونڈنے کی بات آتی ہے ، ازگر کے تعاون کے ساتھ ، اسے شکست دینا مشکل ہے۔ چاہے آپ ویب کرالر بنا رہے ہو یا ویب سکریپنگ کی بنیادی باتوں کے بارے میں جان رہے ہو صرف یہ ہے کہ آپ کتنا سیکھنا چاہتے ہیں۔

اگر آپ کرالر یا بوٹس بنانے کے مزید طریقے ڈھونڈ رہے ہیں تو آپ کوشش کر سکتے ہیں۔ ازگر کا استعمال کرتے ہوئے ٹویٹر اور انسٹاگرام بوٹس بنائیں۔ . ازگر ویب ڈویلپمنٹ میں کچھ حیرت انگیز چیزیں بنا سکتا ہے ، لہذا اس زبان کو دریافت کرتے وقت یہ ویب کرالرز سے آگے بڑھنے کے قابل ہے۔

بانٹیں بانٹیں ٹویٹ ای میل۔ 15 ونڈوز کمانڈ پرامپٹ (CMD) کمانڈز جو آپ کو معلوم ہونی چاہئیں۔

کمانڈ پرامپٹ اب بھی ونڈوز کا ایک طاقتور ٹول ہے۔ یہاں سب سے زیادہ مفید CMD احکامات ہیں جو ہر ونڈوز صارف کو جاننے کی ضرورت ہے۔

اگلا پڑھیں۔
متعلقہ موضوعات۔
  • پروگرامنگ۔
  • ویب ماسٹر ٹولز۔
  • پروگرامنگ۔
  • ازگر۔
  • کوڈنگ ٹیوٹوریل
  • ویب کرالرز۔
مصنف کے بارے میں انتھونی گرانٹ(40 مضامین شائع ہوئے)

انتھونی گرانٹ ایک فری لانس مصنف ہے جو پروگرامنگ اور سافٹ ویئر کا احاطہ کرتا ہے۔ وہ پروگرامنگ ، ایکسل ، سافٹ وئیر ، اور ٹیکنالوجی میں کمپیوٹر سائنس کا بڑا ماہر ہے۔

انتھونی گرانٹ سے مزید

ہماری نیوز لیٹر کو سبسکرائب کریں

ٹیک ٹپس ، جائزے ، مفت ای بکس ، اور خصوصی سودوں کے لیے ہمارے نیوز لیٹر میں شامل ہوں!

سبسکرائب کرنے کے لیے یہاں کلک کریں۔