0

作为我学习 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. 我觉得这可能是一个新手问题,但我不确定我做错了什么。有什么帮助吗?

4

1 回答 1

7

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

self.article_search(go_to)

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

于 2013-08-03T07:28:17.840 回答