2014-09-20 69 views
1

我最近一直在使用維基百科模塊來確定一個隨機的維基百科頁面。維基百科消歧錯誤

我一直在用言語非常大名單這樣做,和random.choice()模塊像這樣:

words=open("words.txt","r") 
words=words.read() 

words=words.split()  

text=random.choice(words) 

string=random.choice(wikipedia.search(text)) 

p = wikipedia.page(string) 

系統似乎最常打交道的,不過偶爾也會憋出來的錯誤:

Traceback (most recent call last): 
    File "/home/will/google4.py", line 25, in <module> 
    p = wikipedia.page(string) 
    File "/usr/local/lib/python2.7/dist-packages/wikipedia/wikipedia.py", line 276, in page 
    return WikipediaPage(title, redirect=redirect, preload=preload) 
    File "/usr/local/lib/python2.7/dist-packages/wikipedia/wikipedia.py", line 299, in __init__ 
    self.__load(redirect=redirect, preload=preload) 
    File "/usr/local/lib/python2.7/dist-packages/wikipedia/wikipedia.py", line 393, in __load 
    raise DisambiguationError(getattr(self, 'title', page['title']), may_refer_to) 
DisambiguationError: "The Scarf" may refer to: 
The Scarf (film) 
The Scarf (opera) 
Scarf (disambiguation) 
Arthur Stewart King Scarf 

有反正我可以繞過嗎?

回答

1

一個顯而易見的方式是下載維基百科頁面名稱的完整列表,並使用它來代替您的單詞列表。這對維基百科的搜索引擎來說也是非常友善的,因爲你不需要獲得一個隨機頁面(此外,如果你想要一個統一的隨機頁面,你不能使用搜索引擎)。

一個不太好但可能更簡單的解決方法是您只需嘗試/除了DisambiguationError並再試一次。

1

更重要的是,在您的處置使用工具:

wikipedia.random(pages=1) 

Get a list of random Wikipedia article titles. 

Note 

Random only gets articles from namespace 0, meaning no Category, User talk, or other meta-Wikipedia pages. 

Keyword arguments: 

    pages - the number of random pages returned (max of 10) 

(從https://wikipedia.readthedocs.io/en/latest/code.html#api