urlopen을 할 때 HTTP Error 403: Forbidden error가 난다면

데이터 수집을 하기 위해 크롤링을 수행하는데 

 

from bs4 import BeautifulSoup

from urllib.request import urlopen

url = 'https://www.chicagomag.com/Chicago-Magazine/November-2012/Best-Sandwiches-Chicago/'

html = urlopen(url)

soup = BeautifulSoup(html, 'html.parser')

soup

 

다음과 같이 에러가 난다면

 

그림1. HTTP error

 

이런 경우 다음과 같이 headers를 다음과 같이 추가해서 크롤링 중이라는 것을 숨겨서 크롤링을 할 수 있다고 한다

 

from bs4 import BeautifulSoup

from urllib.request import urlopen, Request  ##Request module

url = 'https://www.chicagomag.com/Chicago-Magazine/November-2012/Best-Sandwiches-Chicago/'

headers = {'User-Agent':'Chrome/66.0.3359.181'}  #headers

req = Request(url,headers=headers)  ##Request

html = urlopen(req)  ##urlopen

soup = BeautifulSoup(html, 'html.parser')

soup

 

urllib.request.Request 모듈을 추가하고

 

headers = {'User-Agent':'Chrome/66.0.3359.181'}를 추가하고

req = Request(url,headers=headers)를 생성하고

html = urlopen(req)로 html을 생성하여
 
BeautifulSoup를 수행하면 된다
 
그림2. 크롤링된 결과

 

참고

 

https://kkangdda.tistory.com/56

 

urllib.request error - urlopen()이 되지 않을 때 (크롤링 '403 Forbidden'오류 해결, http응답코드 출력하기)

파이썬 공식문서(https://docs.python.org/dev/howto/urllib2.html)에 따르면, urllib.request의 urlopen()에 Request Object(요청할 http object)을 넣으면 Response Object이 반환되고, read()으로 해당 객체를..

kkangdda.tistory.com

 

TAGS.

Comments