Python 3.x Python3:urllib.error.HTTPError:HTTP错误403:禁止

Python 3.x Python3:urllib.error.HTTPError:HTTP错误403:禁止,python-3.x,urllib,Python 3.x,Urllib,请帮帮我 我正在使用Python3.3和以下代码: import urllib.request import sys Open_Page = urllib.request.urlopen( "http://wowcircle.com" ).read().decode().encode('utf-8') 我认为: Traceback (most recent call last): File "C:\Users\1\Desktop\WCLauncer\reg.

请帮帮我

我正在使用Python3.3和以下代码:

import urllib.request
import sys
Open_Page = urllib.request.urlopen(
        "http://wowcircle.com"
    ).read().decode().encode('utf-8')
我认为:

    Traceback (most recent call last):
  File "C:\Users\1\Desktop\WCLauncer\reg.py", line 5, in <module>
    "http://forum.wowcircle.com"
  File "C:\Python33\lib\urllib\request.py", line 156, in urlopen
    return opener.open(url, data, timeout)
  File "C:\Python33\lib\urllib\request.py", line 475, in open
    response = meth(req, response)
  File "C:\Python33\lib\urllib\request.py", line 587, in http_response
    'http', request, response, code, msg, hdrs)
  File "C:\Python33\lib\urllib\request.py", line 507, in error
    result = self._call_chain(*args)
  File "C:\Python33\lib\urllib\request.py", line 447, in _call_chain
    result = func(*args)
  File "C:\Python33\lib\urllib\request.py", line 692, in http_error_302
    return self.parent.open(new, timeout=req.timeout)
  File "C:\Python33\lib\urllib\request.py", line 475, in open
    response = meth(req, response)
  File "C:\Python33\lib\urllib\request.py", line 587, in http_response
    'http', request, response, code, msg, hdrs)
  File "C:\Python33\lib\urllib\request.py", line 507, in error
    result = self._call_chain(*args)
  File "C:\Python33\lib\urllib\request.py", line 447, in _call_chain
    result = func(*args)
  File "C:\Python33\lib\urllib\request.py", line 692, in http_error_302
    return self.parent.open(new, timeout=req.timeout)
  File "C:\Python33\lib\urllib\request.py", line 475, in open
    response = meth(req, response)
  File "C:\Python33\lib\urllib\request.py", line 587, in http_response
    'http', request, response, code, msg, hdrs)
  File "C:\Python33\lib\urllib\request.py", line 507, in error
    result = self._call_chain(*args)
  File "C:\Python33\lib\urllib\request.py", line 447, in _call_chain
    result = func(*args)
  File "C:\Python33\lib\urllib\request.py", line 692, in http_error_302
    return self.parent.open(new, timeout=req.timeout)
  File "C:\Python33\lib\urllib\request.py", line 475, in open
    response = meth(req, response)
  File "C:\Python33\lib\urllib\request.py", line 587, in http_response
    'http', request, response, code, msg, hdrs)
  File "C:\Python33\lib\urllib\request.py", line 513, in error
    return self._call_chain(*args)
  File "C:\Python33\lib\urllib\request.py", line 447, in _call_chain
    result = func(*args)
  File "C:\Python33\lib\urllib\request.py", line 595, in http_error_default
    raise HTTPError(req.full_url, code, msg, hdrs, fp)
urllib.error.HTTPError: HTTP Error 403: Forbidden
回溯(最近一次呼叫最后一次):
文件“C:\Users\1\Desktop\WCLauncer\reg.py”,第5行,在
"http://forum.wowcircle.com"
文件“C:\Python33\lib\urllib\request.py”,第156行,在urlopen中
返回opener.open(url、数据、超时)
打开文件“C:\Python33\lib\urllib\request.py”,第475行
响应=方法(请求,响应)
文件“C:\Python33\lib\urllib\request.py”,第587行,在http\U响应中
“http”、请求、响应、代码、消息、hdrs)
文件“C:\Python33\lib\urllib\request.py”第507行出错
结果=自身调用链(*args)
文件“C:\Python33\lib\urllib\request.py”,第447行,在调用链中
结果=func(*args)
文件“C:\Python33\lib\urllib\request.py”,第692行,在http\u error\u 302中
返回self.parent.open(新建,超时=请求超时)
打开文件“C:\Python33\lib\urllib\request.py”,第475行
响应=方法(请求,响应)
文件“C:\Python33\lib\urllib\request.py”,第587行,在http\U响应中
“http”、请求、响应、代码、消息、hdrs)
文件“C:\Python33\lib\urllib\request.py”第507行出错
结果=自身调用链(*args)
文件“C:\Python33\lib\urllib\request.py”,第447行,在调用链中
结果=func(*args)
文件“C:\Python33\lib\urllib\request.py”,第692行,在http\u error\u 302中
返回self.parent.open(新建,超时=请求超时)
打开文件“C:\Python33\lib\urllib\request.py”,第475行
响应=方法(请求,响应)
文件“C:\Python33\lib\urllib\request.py”,第587行,在http\U响应中
“http”、请求、响应、代码、消息、hdrs)
文件“C:\Python33\lib\urllib\request.py”第507行出错
结果=自身调用链(*args)
文件“C:\Python33\lib\urllib\request.py”,第447行,在调用链中
结果=func(*args)
文件“C:\Python33\lib\urllib\request.py”,第692行,在http\u error\u 302中
返回self.parent.open(新建,超时=请求超时)
打开文件“C:\Python33\lib\urllib\request.py”,第475行
响应=方法(请求,响应)
文件“C:\Python33\lib\urllib\request.py”,第587行,在http\U响应中
“http”、请求、响应、代码、消息、hdrs)
文件“C:\Python33\lib\urllib\request.py”第513行出错
返回自我。调用链(*args)
文件“C:\Python33\lib\urllib\request.py”,第447行,在调用链中
结果=func(*args)
文件“C:\Python33\lib\urllib\request.py”,第595行,默认为http\u error\u
raise HTTPError(请求完整的url、代码、消息、hdrs、fp)
urllib.error.HTTPError:HTTP错误403:禁止

我理解,我无法访问wowcircle.com网站。但我只想获取源代码!我相信我可以做到,没有通行证,但是如何做到呢?

我建议您相应地设置标题。看看你的浏览器发送了什么(HTTP头插件)

函数可能如下所示:

def openAsOpera(url):
    u = urllib.URLopener() # Python 3: urllib.request.URLOpener
    u.addheaders = []
    u.addheader('User-Agent', 'Opera/9.80 (Windows NT 6.1; WOW64; U; de) Presto/2.10.289 Version/12.01')
    u.addheader('Accept-Language', 'de-DE,de;q=0.9,en;q=0.8')
    u.addheader('Accept', 'text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/webp, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1')
    f = u.open(url)
    content = f.read()
    f.close()
    return content
这可以让您绕过一些网页上的错误,这些网页比基本版本更希望从客户端获得更多信息

现在我得到了这个错误:

Traceback (most recent call last):
  File "<pyshell#0>", line 1, in <module>
    s = openAsOpera('http://wowcircle.com/')
  File "C:....pyw", line 522, in openAsOpera
    f = u.open(url)
  File "C:\Python27\lib\urllib.py", line 208, in open
    return getattr(self, name)(url)
  File "C:\Python27\lib\urllib.py", line 359, in open_http
    return self.http_error(url, fp, errcode, errmsg, headers)
  File "C:\Python27\lib\urllib.py", line 376, in http_error
    return self.http_error_default(url, fp, errcode, errmsg, headers)
  File "C:\Python27\lib\urllib.py", line 381, in http_error_default
    raise IOError, ('http error', errcode, errmsg, headers)
IOError: ('http error', 302, 'Moved Temporarily', <httplib.HTTPMessage instance at 0x02C8F1C0>)
注意:重定向到这个位置:
http://wowcircle.com/?pmtry=1
然后到whis:
http://wowcircle.com/?pmtry=2
。算起来。似乎在等饼干


因此,我的分析结果是:每次访问站点时,不要忘记发送cookie

我在[u=urllib.URLopener()]中有一个AttributeError:[u=urllib.URLopener()]我导入了urllib,但请不要再帮我了)我发布了Python 2代码。我想您需要Python3中的
urllib.request.URLOpener
>>> try: s = openAsOpera('http://wowcircle.com/?pmtry=1')
except: import sys; ty, err, tb = sys.exc_info()

>>> err.args[3].headers
['Server: nginx\r\n', 'Date: Sat, 05 Apr 2014 07:42:00 GMT\r\n', 'Content-Type: text/html\r\n', 'Content-Length: 154\r\n', 'Connection: close\r\n', 'Set-Cookie: PMBC=9979187990a58a5bfdaa6d1380ad6156; path=/\r\n', 'Location: http://wowcircle.com/?pmtry=1\r\n']