پرش به محتوا

راهنما:استخراج آمار از مدیاویکی

از ویکی‌پدیا، دانشنامهٔ آزاد

دریافت اطلاعات از ویکی‌پدیا به دو روش مقدور است.

  1. دریافت اطلاعات از دیتابیس که توسط اشتراک تول‌سرور یا دانلود دیتابیس ویکی‌پدیا مقدور است.
  2. دریافت اطلاعات از نرم‌افزار مدیاویکی توسط API:Query که از طریق نوار نشانی (URL BAR) مرورگرها مقدور می‌باشد.

این راهنما برای استخراج اطلاعات به روش دوم طراحی شده‌است؛ برای استخراج آمار و اطلاعات به روش اول ویکی‌پدیا:استخراج آمار از دیتابیس تول سرور را مطالعه نمائید.

مقایسه روش‌ها

[ویرایش]

مقایسه ٔروش‌های استخراج آمار از طریق مدیاویکی یا دیتابیس به شرح زیر است.

تفاوت‌ها
  • در روش مدیاویکی نیاز به هیچ نرم‌افزاری به جز مرورگر اینترنت (تمام مرورگرها پشتیبانی می‌کنند) نیست ولی در روش دیتابیس یا باید اشتراک تول‌سرور داشته باشید یا دیتابیس را بر روی کامپیوترتان ذخیره نمائید و به کمک نرم‌افزارهایی که می‌توانند دیتابیس اس‌کیوال را بخوانند در میان اطلاعات جستجو نمائید.
  • روش مدیاویکی محدود هست و تعداد دستورها و آمارهایی که از سیستم گرفته می‌شوند محدود به تعداد و فرمان است (نمی توان هر آماری را در آن درخواست کرد) و روش دیتابیس این دو محدودیت را ندارد.
  • روش مدیاویکی در ابزارهای اینترنتی مانند کدهای جاوااسکریپت یا کدهای پی‌اچ‌پی قابل استفاده هست ولی روش دیتابیس برای استفاده در این ابزارها باید حتما توسط اشتراک تول‌سرور پشتیبانی شود به این صورت که رباتی اطلاعات را از طریق تول‌سرور استخراج کند و به صورت صفحه xml یا html یا txt در اختیار ابزار اینترنتی بگذارد.(مانند ابزار ویکی‌پدیا:اشتباه‌یاب)
  • کار کردن با روش مدیاویکی آسان و سریع‌تر است و چون نیاز به هیچ ابزاری نیست برای همه در دسترس و قابل استفاده هست.
تشابه
  • هر دو روش در ربات‌هایی که بر روی ویکی‌ها فعال هستند قابل استفاده هستند.
  • هر دو روش می توانند اطلاعات متعددی را در اختیار کاربر یا ربات بگذارند.

دستورها

[ویرایش]

برای مشاهده دستورها و کتابخانه‌های API:Query به اینجا کنید.

مثال

[ویرایش]

در زیر تعدادی کوئری‌ را مشاهده می‌کنید که می توانید متن‌های زیر را بعد از http://fa.wikipedia.org/w/ کپی کنید (یا بر روی پیوندهای آبی کلیک کنید) تا آمار مورد نظرتان ارائه گردد.

۱-نمایش رده‌هایی که با یک عبارت خاص شروع می‌شوند

دستور:api.php?action=query&list=allcategories&acfrom=حزب‌های_سیاسی&aclimit=500

http://fa.wikipedia.org/w/api.php?action=query&list=allcategories&acfrom=حزب‌های_سیاسی&aclimit=500

۲-نمایش صفحاتی که با یک عبارت خاص شروع می‌شوند

دستور:api.php?action=query&generator=allpages&gaplimit=50&gapfrom=پیشه&prop=links|categories

http://fa.wikipedia.org/w/api.php?action=query&generator=allpages&gaplimit=50&gapfrom=پیشه&prop=links%7Ccategories

ترفند:برای دریافت موارد بیشتر می توانید عدد جلوی gaplimit را تغییر دهید این عدد تا ۵۰۰ مورد برای کاربر و ۵۰۰۰ مورد برای ربات ها قابل افزایش هست.
۳-نمایش صفحه‌های پیوند شده به یک آدرس اینترنتی

مثلاً example.com

دستور:api.php?action=query&list=exturlusage&eulimit=500&format=rawfm&euquery=example.com

http://fa.wikipedia.org/w/api.php?action=query&list=exturlusage&eulimit=500&format=rawfm&euquery=example.com

تذکر:این کتابخانه حداکثر تا ۵۰۰ مورد را می تواند نمایش دهد برای موارد بیشتر باید از دیتابیس کوئری بگیرید.
۴-فهرست صفحه‌های محافظت شده

دستور:api.php?action=query&list=protectedtitles&ptlevel=sysop&ptlimit=50&ptprop=expiry|comment

http://fa.wikipedia.org/w/api.php?action=query&list=protectedtitles&ptlevel=sysop&ptlimit=50&ptprop=expiry%7Ccomment

۵-رده‌های یک صفحه

دستور:api.php?action=query&prop=categories&titles=%D8%A7%DB%8C%D8%B1%D8%A7%D9%86&clshow=!hidden&cllimit=500

http://fa.wikipedia.org/w/api.php?action=query&prop=categories&titles=%D8%A7%DB%8C%D8%B1%D8%A7%D9%86&clshow=!hidden&cllimit=500

۶-فهرست مدیران

دستور:api.php?action=query&list=allusers&augroup=sysop&aulimit=50

http://fa.wikipedia.org/w/api.php?action=query&list=allusers&augroup=sysop&aulimit=50

۷-فهرست تغییرمسیرهای یک صفحه خاص

مثلا: ایران:

دستور:api.php?action=query&list=backlinks&bltitle=ایران&bllimit=50&blfilterredir=redirects

http://fa.wikipedia.org/w/api.php?action=query&list=backlinks&bltitle=ایران&bllimit=50&blfilterredir=redirects

تذکر:این کتابخانه حداکثر تا ۵۰۰ مورد را می تواند نمایش دهد برای موارد بیشتر باید از دیتابیس کوئری بگیرید این کد بر روی ۵۰ مورد تنظیم شده است.
۸-فهرست صفحه‌هایی پیوند به یک صفحه خاص دارند (پیوند به)

مثلا: ایران:

دستور:api.php?action=query&list=backlinks&bltitle=ایران&bllimit=50

http://fa.wikipedia.org/w/api.php?action=query&list=backlinks&bltitle=ایران&bllimit=50

تذکر:این کتابخانه حداکثر تا ۵۰۰ مورد را می تواند نمایش دهد برای موارد بیشتر باید از دیتابیس کوئری بگیرید این کد بر روی ۵۰ مورد تنظیم شده است.
۹-فهرست الگوها (در قالب xml)
در عبارت aplimit، کلمه ap مخفف all pages است.
۱۰-آمار از وضعیت ویکی‌فا
۱۱-فهرست خطاهای لینتر

https://www.mediawiki.org/w/api.php?action=help&modules=query%2Blinterrors

فهرست میان‌ویکی‌های یک صفحه

https://fa.wikipedia.org/w/api.php?action=query&prop=langlinks&titles=%D8%A7%DB%8C%D8%B1%D8%A7%D9%86&redirects=1&lllimit=500

متن تفاوت ویرایش

https://fa.wikipedia.org/w/api.php?action=compare&fromrev=24275599&torev=26278079

در ربات پایتون

[ویرایش]

می‌توان از کوئری‌ها در ربات‌های پایتون استفاده کرد مزیت آنها نسبت به توابع و کلاس‌های موجود در پای‌ویکی‌پدیا (به انگلیسی: pywikipedia) سرعت بیشتر آنها است و نسبت به کوئری‌های اس‌کیوال این مزیت را دارد که ربات قابلیت اجرا بر روی کامپیوترهای خانگی را نیز دارد و محدود به ربات‌های تول‌سرور نخواهد بود.

تابع استخراج میان‌ویکی مترادف

به صورت پیش‌فرض en > fa

import query
def englishdictionry( link ,first_site='en',second_site='fa'):
    if link.find('#')!=-1:
        return False
    if link==u'':
        return False    
    link=link.replace(u' ',u'_')
    site = wikipedia.getSite(first_site)
    sitesecond= wikipedia.getSite(second_site)
    params = {
        'action': 'query',
        'prop': 'langlinks',
        'titles': link,
        'redirects': 1,
        'lllimit':500,
    }
    try:
        interwikiname = query.GetData(params,site, encodeTitle = True)  
        cases=interwikiname [u'query'][u'pages'][0][u'langlinks']
        for item in cases:
            if item[u'lang']==second_site:
                intersec=item[u'*']
                break
        result=intersec
        if result.find('#')!=-1:
            return False
        return result
    except: 
        return False
تابع دریافت الگوهای یک صفحه
import query
def templatequery(link,site='fa'):
    temps=[]
    link=link.split(u'#')[0].strip()
    if link==u'':
        return False    
    link=link.replace(u' ',u'_')
    site = wikipedia.getSite(site)
    params = {
            'action': 'query',
            'prop':'templates',
            'titles': link,
            'redirects': 1,
            'tllimit':500,
    }

    try:
        templatename = query.GetData(params,site, encodeTitle = True)
        our_templates=templatename[u'query'][u'pages'][0][u'templates']
        for temp in our_templates:
            temps.append(temp[u'title'])         
        return temps
    except: 
        return False
تابع دریافت رده‌های یک صفحه
import query
def catquery(link,site='fa',hidden=True):
    cats=[]
    link=link.split(u'#')[0].strip()
    if link==u'':
        return False    
    link=link.replace(u' ',u'_')
    site = wikipedia.getSite(site)
    if hidden:
        params = {
            'action': 'query',
            'prop': 'categories',
            'titles': link,
            'redirects': 1,
            'cllimit':500,
        }
    else:
        params = {
                'action': 'query',
                'prop': 'categories',
                'titles': link,
                'redirects': 1,
                'clshow':'!hidden',
                'cllimit':500,
            }
    try:
        categoryname = query.GetData(params,site, encodeTitle = True)
        our_categories=categoryname[u'query'][u'pages'][0][u'categories']
        for cat in our_categories:
            cats.append(cat[u'title'])         
        return cats
    except: 
        return False

جستارهای وابسته

[ویرایش]

ربات‌های استفاده کننده از کوئری مدیاویکی

منابع

[ویرایش]

پیوندهای بیرونی

[ویرایش]