< Manual:Pywikibot‎ | Compat
Other languages:
English español français polskičeština 中文 日本語
This page is documentation for Pywikipedia Compat, which is no longer supported. This page is kept for historical interest. It may document scripts and features that are obsolete and/or no longer supported. Do not rely on the information here being up-to-date.
Creating a DataPage object
Different ways to create a DataPage and Page object for Wikidata: First way is creating a data_repo first, use this way only when you have ID of the item (Q####)
import pywikibot# create a site object, here for en-wikisite = pywikibot​.​getSite​(​'en'​)​# get the data repository site for the given siterepo = site​.​data_repository​()​# OR you may also get the site by language code/family:# repo = pywikibot.getSite('wikidata', 'wikidata')# We also can create a DataPage by its ID in two ways# First by site and title:data = pywikibot​.​DataPage​(​repo​, "Q42")#OR the second way by the ID number:data = pywikibot​.​DataPage​(​42​)
the second way is:
import pywikibot# create a site object, here for en-wikisite = pywikibot​.​getSite​(​'en'​)​# create a Page object for en-wikipage = pywikibot.Page(site, "Helium")# Now we create the corresponding DataPage:data = pywikibot​.​DataPage​(​page​)​# Warning: This page does not have a valid title until you get its content
You cannot change any item, value, or label without getting data first.
Getting data
Get the data in a simple way
# get an entity of that pagedictionary = data.get()# get interwiki links as page objects​language_links = data.interwiki()
Changing labels
data​.​setitem​(​summary​=​u​"BOT SUMMARY", items={'type': u'item', 'label': 'fa', 'value': 'هلیم'})
Changing descriptions
page​.​setitem​(​summary​=​u​"BOT SUMMARY", items={'type': u'description', 'language': 'en', 'value': 'noble gas'})
Changing sitelinks
data​.​setitem​(​summary​=​u​"BOT SUMMARY", items={'type': u'sitelink', 'site': 'de', 'title': 'OK'})
Changing or creating claims/statements
data​.​editclaim​(​property​, value ,​refs​=​{(​"ref1"​,​"value1"​),(​"ref2"​,​"value2"​)})
property can be a string like "capital" or "p36" or "P36" or "36" or 36
value can be a string like "Moscow" or "Q649" or "q649" or "649" or 649
refs is optional and if you don't add any references the bot will change either:
ref1 can be a string like "imported from" or "p143" or etc
value1 can be a string like "English Wikipedia" or "q328" or etc
other refs are optional too
Important:language of values must the same as the Wikipedia page you load at first. For example, if you load Russia from Deutsch Wikipedia your values must be:
data​.​editclaim​(​"Hauptstadt"​, "Moskau" ,​refs​=​{(​"Datenvorlage"​,​"Englischsprachige Wikipedia ")})
and if you run your bot on English values, the bot won't work
If there was a claim already the code changes the claim, and if not the code adds the claim.
Getting all entities (of an item)
dictionary = data.get()
Removing claim or claims
data​.​removeclaim​(​property​, value)
you can add the property in the way shown above, value is optional and it's better to use when we have multiple claims for a statement if you don't use value, every claim that uses the property will be removed
Creating an item
Simple example for creating new items.
Use this code snippet with care. It does not test whether a data repository item already exists. It only test whether it exists for a given site page. This could also mean that a given site page has no language link on a given repository page. This should be checked before a page is created.
# -*- coding: utf-8 -*-import wikipediasite = wikipedia.getSite('fa') # add parameter fam='wikipedia' if you haven't declared family = 'wikipedia' in your​list_of_articles​=​[​u​"دهستان جونقان", u"قنات_بزل_وار", u"قنات_بسک", u"قنات_بشرآباد"]for name in list_of_articles: # create a Page object of a site page = wikipedia.Page(site, name) # create the corresponding data repository object data = wikipedia​.​DataPage​(​page​) if data.exists(): wikipedia​.​output​(​u​"​%s already exists. Skipping..." % name) else: wikipedia​.​output​(​u​"​%s is missing. Creating..." % name) data.createitem(u"Bot: Importing article from Persian wikipedia")
Last edited on 24 August 2019, at 12:01
Content is available under CC BY-SA 3.0 unless otherwise noted.
Privacy policy
Terms of Use
HomeRandomLog in Settings DonateAbout MediaWiki.orgDisclaimers