반응형

Python에서 url을 이용하여 내용을 읽을려고 할 때, 403 Forbidden 에러가 발생을 하였다.

서버에서 사람이 아닌 자동으로 내용을 읽는 '봇(Bot)'같은 것이라 판단하고 차단을 하는 것 같다.

  File "C:\Python27\lib\urllib2.py", line 127, in urlopen

    return _opener.open(url, data, timeout)

  File "C:\Python27\lib\urllib2.py", line 410, in open

    response = meth(req, response)

  File "C:\Python27\lib\urllib2.py", line 523, in http_response

    'http', request, response, code, msg, hdrs)

  File "C:\Python27\lib\urllib2.py", line 448, in error

    return self._call_chain(*args)

  File "C:\Python27\lib\urllib2.py", line 382, in _call_chain

    result = func(*args)

  File "C:\Python27\lib\urllib2.py", line 531, in http_error_default

    raise HTTPError(req.get_full_url(), code, msg, hdrs, fp)

urllib2.HTTPError: HTTP Error 403: Forbidden 


최초의 코드

response = urllib2.urlopen(url)

return response.read() 


수정된 코드

hdr = {'User-Agent': 'Mozilla/5.0', 'referer' : 'http://m.naver.com'}

req = urllib2.Request(url, headers=hdr)

try:

page = urllib2.urlopen(req)

except urllib2.HTTPError, e:

print e.fp.read()

return page.read()

urllib2.urlopen()을 사용 할 때 위에 코드처럼 헤더를 추가해 주니까 정상적으로 페이지를 읽을 수 있다.




반응형

+ Recent posts