파이썬 크롤링에서 user agent를 학습했다. 참고 영상은 아래처러 나도코딩님의 유트브 강좌이다.
https://www.youtube.com/watch?v=yQ20jZwDjTE&t=3661s
user agent란?
크롬으로 가령 https://naver.com 으로 들어가서 F12(개발자도구)를 켜면
HTTP 패킷 중 Header에 User-Agent가 위치한다. 사람이 정보를 얻기 위해 웹브라우저를 사용하는데 이 웹 브라우저가 어떤 종류이고 어떤 상태인지 적혀 있는 집약체라고 할 수 있다.
웹브라우저라 하면 IE, Edge, Chrome 등등이 있는데 사람마다 휴대폰으로 들어갈 수도 있고, window 11 버전인 os에서 접속할 수도 있다. 이에 따라 화면이 다르게 보이도록 되어 있기 때문에, 크롤링의 기준이 되어 경우에 따라
크롤링 시간과 횟수를 정해두거나, 크롤링이 되지 않게 막아두기도 한다.
또 찾아보다가 알게 되었는데, 파이썬으로 스크래핑을 만들어 자동화 프로그램으로 계속 돌리면
웹서버에 부하가 오기 때문에 해당 User-Agent를 차단한다고도 한다.
파이썬 크롤러의 User-Agent는 python-request/~ 로 매칭된다고 한다.
그래서 사람이 하는 것처럼 보이기 위해서는 User-Agent를 헤더에 입력해야 한다.
내 브라우저와 User_Agent를 확인하려면
구글 검색창에 "What is my User Agent" 를 검색해도 바로 나오고,
사이트(https://www.whatismybrowser.com/detect/what-is-my-user-agent)를 검색해도 바로 나온다.
사진의 위는 크롬이고, 아래는 엣지로 열어봤는데, 주소도 조금 다르고 엣지의 경우 Edg~하고 더 추가됨을 확인할 수 있다.
해당 User-Agent 바탕으로 크롤링을 해보자!
import requests
url = "https://www.naver.com"
headers = {
"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36"
}
res = requests.get(url, headers=headers)
res.raise_for_status()
with open ("naver.html", "w", encoding="utf-8") as f:
f.write(res.text)
이렇게 해보면, naver.html이라는 파일을 생성해서 write 모드로 크롤링 해온 모든 정보를
저장하게 된다. jupyter notebook으로 했을 때, 아래처럼 naver.html이 생성이 되었다.
열어보면 아래처럼 html 소스들이 저장 되어있음을 확인할 수 있다.
'개발자의 개발개발한 하루 > python' 카테고리의 다른 글
python iframe 렌더링된 페이지 크롤링 하기 (0) | 2022.02.16 |
---|---|
python 3에서 바뀐 것 (출력방식, 문자열 인코딩) (0) | 2022.02.14 |
파이썬 정규표현식 re 사용 (0) | 2022.02.09 |
파이썬 크롤링 requests 사용 (0) | 2022.02.08 |
파이썬 크롤링 무료 공부 사이트 (0) | 2022.02.08 |
댓글