在自己内部调用一个函数

时间:2013-08-03 07:25:18

标签: python mediawiki-api

作为我学习Python的一部分,我正在编写一个MediaWiki API的包装器来返回文章文本。

以下是搜索文章的功能:

def article_search(self, search_terms):
    url = self.article_url % (self.language, search_terms)
    response = requests.get(url)
    tree = html.fromstring(response.text)

    results = tree.xpath('//rev[@contentmodel='wikitext']/text()')
    test_redirect = re.search('\#REDIRECT', str(results))

    if test_redirect:
        redirect = re.search(r'\[\[([A-Za-z0-9_]+)\]\]', str(results))
        go_to = redirect.group(1)
        article_search(go_to)

    else:
        return results

if-else块的目标是检查搜索结果是否真的试图将我们重定向到另一个页面(if test_redirect),然后搜索我们被重定向到的页面article_search(go_to)。当我在一个我知道不重定向的页面上运行代码时,它工作正常。但是,当我在确实重定向的页面上运行时,我得到NameError: global name 'article_search' is not defined。我觉得这可能是一个新手问题,但我不确定我做错了什么。有什么帮助吗?

1 个答案:

答案 0 :(得分:7)

我认为article_search是一个类的一部分(因为你使用self)。在这种情况下,你应该这样称呼它:

self.article_search(go_to)

(假设它不是一个奇怪的静态方法,而是一个实例的方法)

相关问题