본문 바로가기
프로그래밍/Python

파이썬으로 크롤링하면서 데이터를 가져올 수 없을 때

by 페이지다운 2020. 2. 20.
반응형

방금 내가 겪은 일이어서 정보 공유 차원으로 올려본다.

 

가끔씩 파이썬으로 크롤링을 하면서 분명 URL을 제대로 입력했는데도 불구 웹의 내용을 가져올 수 없는 경우가 있다.

 

분명 응답 코드는 200인데 말이다(가끔씩 응답 코드 403을 내보내는 경우도 있다).

 

이럴 경우에는 유저 에이전트를 헤더에 추가시켜주면 된다.

 

유저 에이전트는 https://namu.wiki/w/%EC%82%AC%EC%9A%A9%EC%9E%90%20%EC%97%90%EC%9D%B4%EC%A0%84%ED%8A%B8

 

사용자 에이전트 - 나무위키

아래에 샘플을 준비했다. Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 Safari/537.36 윈도우 NT 10버전 64비트의 Gecko 같은 브라우저 레이아웃 엔진인 KHTML을 사용하는 크롬 52.0.2743.116버전이고, AppleWebKit 및 Safari 537.36 버전 과 호환되는 브라우저다. (User-

namu.wiki

이 곳에서 참고하자. 내용이 잘 정리되어 있다.

 

그럼 바로 알아보자.

 

일단 가짜 유저 에이전트를 가져오는 방법이다. PyPI에 fake-useragent라 하여 가짜 유저 에이전트를 생성해주는 라이브러리가 있다.

 

https://pypi.org/project/fake-useragent/

 

 

fake-useragent

Up to date simple useragent faker with real world database

pypi.org

1
pip install fake-useragent
cs

 

그럼 어떻게 쓸까?

 

1
2
3
4
from fask_useragent import UserAgent
 
ua = UserAgent()
print(ua.random)
cs

 

이렇게 하면 랜덤한 유저 에이전트가 생성된다. chrome으로 하고 싶으면 chrome을 random 대신 넣어도 된다. 다른 웹브라우저도 마찬가지.

 

유저 에이전트를 헤더에 추가해 보자. requests 모듈을 기준으로 올려 보겠다.

 

1
2
3
4
5
import requests
 
headers = {'user-agent''Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2224.3 Safari/537.36'}
 
res = requests.get('https://tistory.com/', headers=headers)
cs

 

이렇게 추가해주면 된다.

 

끝!

반응형

댓글