1

重複の可能性:
Python でウィキペディアの記事を取得する

>>> print urllib2.urlopen('http://zh.wikipedia.org/wiki/%E6%AF%9B%E6%B3%BD%E4%B8%9C').read()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 126, in urlopen
    return _opener.open(url, data, timeout)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 400, in open
    response = meth(req, response)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 513, in http_response
    'http', request, response, code, msg, hdrs)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 438, in error
    return self._call_chain(*args)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 372, in _call_chain
    result = func(*args)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 521, in http_error_default
    raise HTTPError(req.get_full_url(), code, msg, hdrs, fp)
urllib2.HTTPError: HTTP Error 403: Forbidden
4

2 に答える 2

6

ユーザーエージェントを提供する必要があります。そうしないと、あなたがしたように 403 が返されます。

ウィキメディア ウィキでは、User-Agent ヘッダーを提供しない場合、または空または一般的なヘッダーを提供する場合、リクエストは HTTP 403 エラーで失敗します。ユーザー エージェント ポリシーを参照してください。他の MediaWiki インストールにも同様のポリシーがある場合があります。

したがって、コードにユーザー エージェントを追加するだけで、正常に動作するはずです。

于 2012-08-05T06:19:46.547 に答える
1

wgetのページをダウンロードしてみてくださいcURL
できない場合は、ネットワークに問題がある可能性があります。
可能であれば、ウィキペディアは特定のユーザー エージェントをブロックする可能性があります。その場合、urllib2 のadd_headerを使用して、カスタム ユーザー エージェントを定義します (ブラウザーの要求を模倣するため)。

于 2012-08-05T06:00:06.297 に答える