Web/Crawling

[Web] 웹 크롤링,스크래핑 Basic - 3. User-Agent

skwkiix 2023. 8. 8. 02:19
728x90

User-Agent

웹 브라우저의 경우, User Agent 문자열은 브라우저의 종류, 버전, 운영 체제, 장치 정보 등을 포함한다. 웹 개발자들은 다양한 장치나 브라우저에서 웹 페이지가 올바르게 표시되도록 조정하기 위해 user_agent 를 사용한다

 

User- Agent 기능 ( 출처 : chatgpt )

  1. 웹 사이트의 정상적인 사용자처럼 보이기: 몇몇 웹 사이트는 봇이나 스크래퍼로부터의 요청을 차단하거나 제한할 수 있습니다. 웹 스크래핑을 하는 경우에도 웹 사이트 서버로부터의 응답을 받을 때 봇으로 감지되지 않도록 하기 위해 실제 브라우저에서 보내는 요청과 유사한 User-Agent를 사용합니다.
  2. 콘텐츠 형식 지정: 웹 서버는 User-Agent 정보를 보고 요청하는 콘텐츠를 다르게 제공할 수 있습니다. 예를 들어, 모바일 디바이스의 User-Agent를 사용하면 모바일 버전의 웹 페이지를 받아볼 수 있습니다.
  3. 반응 형식 변경: 웹 페이지의 디자인 및 레이아웃은 User-Agent에 따라 조정될 수 있습니다. 따라서 특정 형식으로 웹 페이지를 스크랩하고자 할 때 해당 형식의 User-Agent를 사용하여 적합한 레이아웃을 얻을 수 있습니다.
  4. 법적 이슈 회피: 웹 스크래핑이 웹 사이트의 이용 약관을 위반할 수 있는 경우, User-Agent를 설정하여 스크래퍼로 감지되지 않도록 하여 법적 문제를 회피할 수 있습니다.

(웹 스크래핑 시, 사이트의 이용약관을 준수하여 진행해야한다.)


1) Error

User - Agent 미사용시 발생 에러, 페이지 별로 상이하다.
(에러를 무시하고 html 이 잘 출력될 수도 있다.)
  • 출력
import requests
​
url = "https://datapilots.tistory.com/"
res = requests.get(url)
res.raise_for_status() 
​
with open("tistory.html","w",encoding="utf8") as f:
    f.write(res.text)

https://datapilots.tistory.com/ 페이지를 html 파일을 만들었을 때, 404 클라이언트 에러가 출력된다.

 

404 client Error 출력


2) User - Agent 가져오기

  • 크롬 검색 창에 what is my user agent 를 검색한다.

User-Agent

 

  •  내 사용자 에이전트 의 해당 내용을 복사한 후, 크롤링에 활용한다.

3) User-Agent 사용

import requests
​
# User-Agent
custom_header = {"User-Agent" : "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Safari/537.36"}
​
url = "http://datapilots.tistory.com/" # 티스토리는 User-Agent 없어도 잘 출력되긴 하지만, 임의로 선택
res = requests.get(url, headers=custom_header)
res.raise_for_status() 
​
with open("Datapilots_tistory.html","w",encoding="utf8") as f:
    f.write(res.text)

User-Agent  사용 시, 에러 없이 Datapilots_tistory.html 파일이 잘 생성된다.

 

728x90