문제상황
크롤링을 할때 사이트에 접근만 했을뿐인데 403에러가 나는 경우가 있을 것이다.
이것은 https주소를 가지고 있는, 보안이 조금 더 강한 사이트일 경우 발생할 수 있는데
알려져있지않은 부정 접근을 차단하는 것이다.
해결방법
해결방법으로는 request객체의 header에 '내가 누구야!' 라는 정보를 넣어주면 되는데
# 웹 주소가 https 이므로 ssl 패키지 이용
# html = urlopen(url) #403번 에러 발생(부정접근으로 차단-알려진 agent를 헤더에 추가해서 전달하면 됨)
# 헤더를 추가하려면 일반적으로 Request(get_url,headers={key:value})
import ssl
context = ssl._create_unverified_context() # 암호화 해서 가져갈 수 있는 객체
req = Request(url,headers={'User-Agent':'Mozilla/5.0'}) # request 객체
html=urlopen(req,context=context)
soup = BeautifulSoup(html,'html.parser')
soup
이렇게 Request 객체를 만들어서 header에 값을 넣어주고 보내면 정상적으로 크롤링 해온답니다!
728x90
'프로그래밍 > Crawling' 카테고리의 다른 글
[Python] json 에러 교정하기 (0) | 2023.10.23 |
---|---|
[Selenium] iframe 변경하는 방법 / 상위 프레임으로 변경하는 방법 (0) | 2022.08.18 |
[Selenium] 버튼 클릭해서 나오는 값 동적 크롤링 하는 방법 (0) | 2022.08.16 |
[Selenium] 네이버 동적 로그인 하기 - 셀레니움 사용법 (0) | 2022.08.16 |
[Python] Connection aborted에러 : Header추가하기 (크롤링) (0) | 2022.08.03 |