web crawing-개념

엔지니어 큐브·2023년 8월 25일

웹 크롤링

목록 보기
2/4

웹 크롤링은 client <-> server 간의 상호작용으로 데이터를 얻는 방법이다.

url 의미

http://naver.com:80/main/read.nhn?mode=LSD&mid=shm&sid1=105&oid=001#da_82737

  • https:// -Protocol
  • naver.com -Domain
  • 80 -port
  • read.nhn? -page
  • ?mode=LSD&mid=shm&sid1=105&oid=001#da_82737 -query

데이터 크롤링의 대략적인 관점

1) client는 target server에서 url을 얻는다.
2) client는 server에게 해당 url을 get or post의 방법으로 requests를 보낸다.
3) server는 client에게 JSON or Html의 형식으로 response를 보낸다.
4) response를 통해 원하는 데이터를 얻는다.

url을 얻을 수 있는 웹페이지의 종류

1) 정적인 페이지 : 웹 브라우져에 화면이 한번 뜨면 이벤트에 의한 화면의 변경이 없는 페이지
* 페이지에서 선택 박스 누르면 새로운 화면이 뜨고 url의 변화가 생긴다.

2) 동적인 페이지 : 웹 브라우져에 화면이 뜨고 이벤트가 발생하면 서버에서 데이터를 가져와 화면을 변경하는 페이지
- 페이지에서 더보기 박스이고 누르면 url의 변화가 없다.

3) API : 사용자 키와 비밀키를 requests에 같이 보내야 response를 얻을 수 있다.
4) Html

requests 이용

1) json 문자열로 받아서 파싱하는 방법 : 주로 동적 페이지 크롤링할때 사용
- list,dict으로 변환하고 df을 만들면됨

2) html 문자열로 받아서 파싱하는 방법 : 주로 정적 페이지 크롤링할때 사용
- bs 객체를 만들어서 CSS SELECT 해야됨.

3) response.text 통해서 html인지 json인지 확인하고 데이터 처리하면 됨

4) get
* url에 데이터가 포함됨, 길이 제한이 있음, response = requests.get(url)
5) post
- body에 데이터가 포함됨, response = requests.post(url, params, headers=headers)

response 출력 값 특징

  • 2xx번대 : 정상
  • 3xx번대 : 정상, 메모리에 저장된 url을 가져왔다는 의미
  • 4xx번대 : 비정상, url의 ip or port 부분이 잘못된거 아니면 server에서 원하는 요청 방식이 아닌 잘못된 요청을 했을 시 발생할 수 있음
  • 5xx번대 : 비정상, url의 쿼리 부분이 잘못됬을 수 있음
  • 4, 5xx번대가 발생하면 위와 같은 이유가 아닌 다른 이유가 있을 수 있음. 맹신하지 말 것.
profile
큐브가 필요하다...!!!

0개의 댓글