카테고리 없음

[혼공 분석] 2주차_데이터 수집하기

unocho 2025. 1. 15. 20:54

벌써 2주차가 시작되었다.

 

가능하다면 매주 화요일 책을 읽고 요약을 하여보고 기본 과제를 마무리 하려고 한다. 추가적으로 추가 과제의 경우 해당주에 여유가 된다면 주말까지 작업하여 마무리하고, 되지 않는다면 그주 화요일에 작업한 자료 기반으로 마무리하고자 한다.

 

Chapter 2는 실데이터 기반 수집 방안을 제공한다. 

2-1 API 사용하기

데이터를 수집하고 보관하는 저장소를 데이터베이스(DB)라고 부른다. 데이터의 주인들은 대부분의 데이터베이스를 보안 준수에 맞추어 보관하며, 실제 민감한 개인정보를 담고있는 데이터와 같은 민감성 데이터의 경우 접근 권한을 엄격하게 관리하거나, 네트워크를 분리시켜 접근 제어를 합니다.

이러한 데이터베이스를 접근하기 위하여 제공받는 데이터베이스의 주소는 API(Application Programming Inteface)는 목적지 A와 목적지 B 간의 소통을 위한 대화 방안으로 데이터를 주고 받을 수 있게끔 연결을 시켜주는 역할을 합니다. 

 

이러한 다양한 소통 방안을 위해 수집 할 수 있는 데이터 형식으로는 [JSON, XML..] 등이 있습니다. 

 

실습 : 20대가 가장 좋아하는 도서 찾기

도서관 정보나루 사이트의 공개된 데이터를 API를 활용하여 다운로드 한 후, 20대에게 가장 인기있는 도서들 추출 진행

 

2-2 웹 스크래핑 사용하기

웹 스크래핑/ 웹 크롤링은 바로 프로그램으로 웹사이트의 페이지들을 옮겨다니면서 필요한 데이터들을 추출하는 방안 입니다.

웹 스크래핑의 예시를 위해서, 특정 도서의 페이지 수를 알기 위해 Yes 24에 업로드 되어있는 특정 도서의 페이지 수 추출 입니다.

 

실습: Yes24 도서 쪽수 추출

 

request 를 활용하여 yes24 내 특정 isbn 을 가진 자료 가져오기

 

request 사용 시 위와 같이 웹 기반 API의 호출이 가능합니다. HTML 페이지 내 내용 추출을 위해서는 뷰티플수프이나 스크래피와 같은 패키지를 사용하기도 합니다.

 

 

웹 스크래핑시 주의 점

1. 웹사이트의 스크래핑 허용 여부 확인

- 대부분의 웹사이트는 스크래핑 프로그램 접근 허용 여부를 명시한 robots.txt 파일을 보유하고 있습니다. 특정 웹사이트의 페이지 스크래핑 가능 여부를 판별하기 위해 robots.txt 파일 확인을 하면 좋습니다

2. HTML 테그 특정 가능 여부 확인

- 테그 이름이나 속성이 필요한 HTML 태그를 특정할 수 없다면 페이지 내 데이터 추출이 불가능합니다. 

 

금주 과제

추가과제

1. 온라인 서점의 검색 결과 페이지 URL 을 만듭니다

2. request.get()함수로 검색 결과 페이지의 HTML을 가져옵니다.

3. BeautifulSoup로 HTML을 파싱합니다

4. BeautifuSoup의 find() 메서드로 <a> 태그를 찾아 상세 페이지 URL을 추출합니다 ['class' = 'gd_name']

5. Request.get()함수로 다시 도서 상세 페이지 URL을 추출합니다

6. BeautifulSoup로 HTML을 파싱합니다

7. BeautifulSoup의 find()메서드로 '품목정보' <div> 가 있는 태그를 찾습니다 ['id' : 'infoset_specific']

8. BeautifulSoup의 find_all()메서드로 쪽수가 들어있는 <tr>태그를 찾습니다 ['tr']

9. 앞에서 찾은 테이블의 행에서 get_text() 메서드로 <td> 태그에 있는 '쪽수'를 가져옵니다