راهنما:استخراج آمار از مدیاویکی
دریافت اطلاعات از ویکیپدیا به دو روش مقدور است.
- دریافت اطلاعات از دیتابیس که توسط اشتراک تولسرور یا دانلود دیتابیس ویکیپدیا مقدور است.
- دریافت اطلاعات از نرمافزار مدیاویکی توسط 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
- ترفند:برای دریافت موارد بیشتر می توانید عدد جلوی gaplimit را تغییر دهید این عدد تا ۵۰۰ مورد برای کاربر و ۵۰۰۰ مورد برای ربات ها قابل افزایش هست.
- ۳-نمایش صفحههای پیوند شده به یک آدرس اینترنتی
مثلاً example.com
دستور: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
- ۵-ردههای یک صفحه
دستور: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
- تذکر:این کتابخانه حداکثر تا ۵۰۰ مورد را می تواند نمایش دهد برای موارد بیشتر باید از دیتابیس کوئری بگیرید این کد بر روی ۵۰ مورد تنظیم شده است.
- ۸-فهرست صفحههایی پیوند به یک صفحه خاص دارند (پیوند به)
مثلا: ایران:
دستور: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=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
جستارهای وابسته
[ویرایش]رباتهای استفاده کننده از کوئری مدیاویکی
- ربات حذف کنندهٔ پروندههای ناموجود از صفحهها
- ربات رده همسنگ
- رباتهای کمکی برای ساخت مقالات رباتیک و استخراج جعبه