Iōng-chiá thó-lūn:A-lú-mih/botsamples

一些pywikibot的問題

siu-kái

不好意思,這方面問題台語表達不易,改用華語。

閣下的botsamples很實用,不過由於我對pywikibot比較沒那麼熟悉,所以有一些問題想請教您。

在第1個範例中,有這樣一行指令:

pop_amount = wd_item.claims['P1082'][0].getTarget().amount

請問:

  1. 目前,wd_item變數是一個dict,裡面有'aliases'、'labels'、'descriptions'、'claims'、'sitelinks'等5個dict,各自下面又有str或list。請問,各自的用途?
  2. 任何地方相關的條目的'P1082'都是指「人口」嗎?該如何知道「密度」、「面積」之類的代碼呢?有總表嗎?
  3. 如您所提供的指令,由前段順利進入到claims['P1082']這個list後,該list長度為33,該如何知道是訪問第幾個Claim呢?比如說總人口「好像」是第0個Claim。
  4. .getTarget().amount這段是要參考pywikibot的API還是什麼?怎麼知道要用getTarget()以及amount呢?

以上問題,謝謝。--S205643 (thó-lūn) 2019-nî 11-goe̍h 16-ji̍t (Pài 6) 06:45 (UTC)

不好意思很多東西其實我都是一知半解的狀態,但還是盡量回答:
  1. wd_item所含的資料可以在wikidata上的頁面看到,例如Q30(美國):
    • aliases是對應(使用英文介面時)最上面表格中看到的「Also known as」欄位,至於labels是對應「Label」、descriptions對應「Description」,個別都含各語言的多種名稱或敘述。
    • claims是接下來Statements和Identifiers兩段那一大串資料。
    • sitelinks是最下面那些各語言維基百科或其他各姊妹計畫中的對應頁面。
  2. P1082是人口property,也有對應頁面(在wikidata:Property:P1082)。wikidata:Wikidata:List_of_properties可能算是總表,可以搜尋。另外不直接有關但 這個介面 可以方便直接查詢資料。
  3. wikidata上的資料不是非常嚴謹(和維基百科一樣眾人可編的東西),資料順序常常不一致,所要的人口到底是列表裡第幾項,可能要針對個別項目或系列來看。從上面Q30的population欄位來看,可以看到其實最後一項才是最新人口(2017年)。人口資料常常會附帶一個point in time屬性(本身也是一個property),是該資料所屬時間。
  4. 我忘了為什麼會知道要用getTarget,應該是在這類範例上看到的(也許有些人看文件或源碼可以知道?)。那個method可以取得屬於Claim物件的target變數,就是該claim主要的數據(我不太了解為什麼要命名為「target」,總之Claim物件還存有其他資料)。如果直接輸出wd_item.claims['P1082'][0].getTarget()的結果,可以看到內容是
{
   "amount": "+3929214",
   "lowerBound": null,
   "unit": "1",
   "upperBound": null
}
當中的amount就是人口數。wikidata上一般數量類的屬性應該都是用amount。--A-lú-mih (thó-lūn) 2019-nî 11-goe̍h 16-ji̍t (Pài 6) 11:58 (UTC)

瞭解!感謝您的回覆。--Lamchuhan (thó-lūn) 2019-nî 11-goe̍h 21-ji̍t (Pài 4) 12:10 (UTC)

@A-lú-mih: 是否有什麼網站或資源能夠對pywikibot這個library更瞭解的?官方提供的doc有看沒有懂> <。--Lamchuhan (thó-lūn) 2019-nî 11-goe̍h 21-ji̍t (Pài 4) 14:15 (UTC)

剛看到這個網頁好像有一些如何讓bot編輯內容的教學。其實我找不太到利用library的完整教學,常常要直接看源碼才知道有哪些功能...。我之後可能會把之前用的某個建立頁面的script放到這裡以供參考。 --A-lú-mih (thó-lūn) 2019-nî 11-goe̍h 23-ji̍t (Pài 6) 09:01 (UTC)

好啊,謝謝。對了,如果我要由en wikipedia訪問wikidata,是連在這兩個網站上也都要有bot帳戶嗎?因為我想從wikidata先抓數據出來,然後再另外建立文章,但在抓數據的階段就不斷跑出下列訊息然後進不去:

Sleeping for 5.0 seconds

--Lamchuhan (thó-lūn) 2019-nî 11-goe̍h 30-ji̍t (Pài 6) 15:49 (UTC)

失禮,失禮,我無注意,無代誌矣。--Lamchuhan (thó-lūn) 2019-nî 12-goe̍h 1-ji̍t (Lé-pài) 01:31 (UTC)
@A-lú-mih: 毋著呢,過一陣又閣出現頂面彼个問題!是按怎會按呢?敢是因為我無wikidata个bot權限?--Lamchuhan (thó-lūn) 2019-nî 12-goe̍h 1-ji̍t (Lé-pài) 04:20 (UTC)
Góa thâu-seng ū chhì khòaⁿ-māi. Kan-ta 掠資料, bô su-iàu 口座 (só͘-í bot權限 sī bô éng-hióng chiah tio̍h). Pywikibot ū-ê kong-lêng 固定 ta̍k-kái cháu liáu lóng ē 等一个仔 chiah koh 繼續 (tiō chhut "Sleeping for x seconds" 訊息), ná-chhiūⁿ tú-tio̍h server 無閒/無反應 mā ē, 總是 góa bô 確定 sī siáⁿ-mi̍h 原因 lí ē tú tio̍h hit-ê 情形. --A-lú-mih (thó-lūn) 2019-nî 12-goe̍h 2-ji̍t (Pài 1) 09:55 (UTC)
返回到 "A-lú-mih/botsamples" 的使用者頁面。