▶ 요약
2-1 API 사용하기
https://www.youtube.com/watch?v=s_-VvTLb3gs&ab_channel=한빛미디어
JSON (Javascript Object Notation)
- JSON ≒ Dictionay + List
- import json
. json.dumps()
. json.loads()
- import pandas as pd
. pd.read_json()
XML (eXtensible Markup Language)
- import xml.etree.ElementTree as et
. et.fromstring()
. *.findtext()
. *.findall()
API (Application Programming Interface)
- import requests
. r = requests.get(url)
. data = r.json()
2-2 웹 스크래핑 사용하기
https://www.youtube.com/watch?v=Il6L8OtNFpc&ab_channel=한빛미디어
BeautifulSoup()
- find()
- find_all()
DataFrame의 행과 열
- loc()
. *.loc[[0,1], ['bookname':'authors']]
. *.loc[0:1, 'bookname':'authors']
: DataFrame에서의 slicing은 마지막 값을 포함한다. (일반적으로는 포함하지 않는다)
▶ 기본 미션
p150의 확인 문제 1번 풀고 인증하기
□ 다음과 같은 데이터 프레임 df가 있을 때 loc 메서드의 결과가 다른 하나는 무엇인가요?
① df.loc[[0, 1, 2], ['col1', 'col2']]
② df.loc[0:2, 'col1':'col2']
③ df.loc[:2, [True, True]]
④ df.loc[::2, 'col1':'col2']
보기를 잘 살펴보면 ①, ②는 그냥 보면(?) 되고 ^^ 답은 ③, ④ 중 하나가 될 것이라는 것을 직감적으로 알 수 있다 !!!
③번을 실제 해보면 다음과 같이 출력이 된다.
응?! 'True' 가 도대체 어떻게 반응한다는 거지!? 해당 Column을 포함할지 안할지를 지정하는 것인가!?
그러면 조금 다른 사례를 확인해보자 !!!
그렇다!!! 가설이 맞았다. 3개의 Columns에 대해서 [참, 거짓, 참]으로 했더니 정말로 그렇게 출력이 되었다.
그러면, 정답은 ④이어야 하는데, 한 번 살펴보자.
'::2'라고 했기 때문에 하나씩 건너뛰라고 했기 때문에 0번행, 2번행만 출력이 되고 있다.
▶ 선택 미션
p. 137 ~ 138 손코딩 실습으로 원하는 도서의 페이지 수를 추출하고 화면 캡쳐하기.
① 온라인 서점의 검색 결과 페이지 URL을 만듭니다.
② requests.get() 함수로 검색 결과 페이지의 HTML을 가져옵니다.
③ BeautifulSoup로 HTML을 파싱합니다.
④ BeautifulSoup의 find() 메서드로 <a> 태그를 찾아 상세 페이지 URL을 추출합니다.
⑤ requests.get() 함수로 다시 도서 상세 페이지의 HTML을 가져옵니다.
⑥ BeautifulSoup로 HTML을 파싱합니다.
⑦ BeautifulSoup의 find() 메서드로 '품목정보' <div> 태그를 찾습니다.
⑧ BeautifulSoup의 find_all() 메서드로 '쪽수'가 들어있는 <tr> 태그를 찾습니다.
⑨ 앞에서 찾은 테이블의 행에서 get_text() 메서드로 <td> 태그에 들어있는 '쪽수'를 가져옵니다.
개인적으로 최근에 주로 사용하는 온라인서점이 알라딘이라서 이번 미션을 알라딘으로 해보고자 한다 ^^
URL 부분을 더 자세히 살펴보자.
응?! isbn이 아니라 Item-ID 으로 구성이 되네!?
혹시... isbn으로도 되지 않을까!?
된다 !!! ^^
어!? 그런데, 책을 다시 한 번 잘 살펴보니... 검색으로 조회 후에 상세 페이지 주소를 얻어서 진행하는 것이네...
다시 !!!
어짜피 검색에 isbn을 사용한다면
실무에서는 바로 상세페이지로 접근을 하겠지만, 우리는 공부중이니 일단 검색부터 진행해보겠다.
앞에서 확인한 URL을 가지고 시작했다.
상세 페이지 링크가 책 제목 부분에 붙어 있으므로 아래와 같은 HTML Tag 부분을 잡아내면 된다.
<a href="https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=329721455" class="bo3"><b>재미있는 게임 제작 프로세스</b></a> |
아래와 같이 코딩해봤다.
여기에 있는 href 값을 이용해서 다음 웹페이지를 읽어오면 된다.
여기에서 잡아내야 하는 것은 페이지 정보이니 아래와 같은 HTML Tag 부분을 잡아내면 된다.
<div class="conts_info_list1"><ul><li>432쪽</li><li>188*257mm (B5)</li><li>821g</li><li>ISBN : 9788931469721</li></ul></div> |
잘 살펴보면 <li> 태그 부분이 보일 것이다.
쪽 정보까지 잘 뽑아냈다~!!!
우리 모두 파이팅 !!!
'Books' 카테고리의 다른 글
[혼공데분] 4주차_데이터 요약하기 (0) | 2024.01.28 |
---|---|
[혼공데분] 3주차_데이터 정제하기 (1) | 2024.01.21 |
[혼공데분] 1주차_데이터 분석을 시작하며 (1) | 2024.01.07 |
[혼공학습단 11기] 혼자 공부하는 데이터 분석 with 파이썬 (0) | 2023.12.27 |
[디코딩] 챗GPT 개발자 핸드북 (0) | 2023.08.28 |