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 test_redirect
if-else ブロックの目的は、検索結果が実際に別のページ ( )にリダイレクトしようとしているかどうかを確認し、リダイレクト先のページを で検索することですarticle_search(go_to)
。リダイレクトしないことがわかっているページでコードを実行すると、正常に動作します。ただし、リダイレクトのあるページで実行NameError: global name 'article_search' is not defined
すると、 . これはおそらく初心者の質問だと思いますが、何が間違っているのかよくわかりません。何か助けはありますか?