1. 스파르타피디아 연습 및 복습
1.1. 스파르타피디아에 open API 붙여보기
1.2. console에 출력해보기
1.3. 웹페이지에 출력하기
1.4. 기존에 보이던 내용 숨기기/삭제하기
1.5. 내용을 붙일 틀 입력시키기
2. 파이썬 기초공부
2.1. 변수, 자료형, 함수, 조건문, 반복문
2.2. package
2.3. 가상환경 (Virtual environment) - 프로젝트별로 패키지를 담을 보관함: venv library 루트
- 프로젝트별로 사용해야 할 패키지의 버전이 다를 수 있기 때문.
2.4. API 가져오기
2.5. 크롤링
2.5.1. 할일
- 웹사이트에 요청해서 html 가져오기 (requests)
- 그 안에서 제목 찾기 (쉽게 찾게하는 라이브러리 이용: beautifulsoup)
2.5.2. beautifulsoup 사용법
- beautiful soup library 가져오기
import requests
from bs4 import BeautifulSoup
headers = {'User-Agent' : 'Mozilla/5.0 (Windows NT 10.0; Win64; x64)AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36'}
#headers: 브라우저 콜 날리는 것을 사람이 콜 날리는 것처럼 만드는 것
data = requests.get('https://www.genie.co.kr/chart/top200?ditc=M&rtm=N&ymd=20210701',headers=headers)
#requests: 내가 긁어오고싶은 url 넣기. 맨 뒤에 헤더 들어감
soup = BeautifulSoup(data.text, 'html.parser')
2.5.3. beautifulsoup 활용하기
- 긁어오고싶은 자료중 하나 우클릭-inspection-elements-해당위치 커서놓고 다시 우클릭 - copy - copy inspecter - 붙여넣기
- 붙여넣은 코드 중 다른 패턴 전까지 복사 후 soup.select('...')에 붙여넣기
- 아래 예에서는 맨 앞에서 tr까지
#body-content > div.newest-list > div > table > tbody > tr:nth-child(1) > td.info > a.title.ellipsis
#body-content > div.newest-list > div > table > tbody > tr:nth-child(2) > td.info > a.title.ellipsis
- 맨 앞에서 tr까지는 동일한 패턴의 내용을 가리킴
- 그 뒤에 nth-child(1)는 특정 데이터 id (e.g., 지니뮤직에서는 특정 음악정보, 네이버영화에서는 특정 영화 정보)
- 맨 마지막 a.title.ellipsis 는 특정 데이터 중 한개의 정보를 나타냄 (여기서는 제목)
musics = soup.select('#body-content > div.newest-list > div > table > tbody > tr')
-> 이것이 해당 묶음(순위, 노래제목, 가수, 앨범 등의 묶음)의 공통 패턴을 가리킴. 그래서 soup.select에 집어 넣으면 위의 패턴을 모두 잡아낼 수 있음.
- musics라는 데이터를 지정한 후 for문을 통해 musics 안에 있는 개별 music를 반복하는 명령 실행
- title, rank, singer 각각 구체적으로 어느데이터를 가져올지 지정. 뒤에 데이터를 어떻게 처리해서 보여줄지를 구체화
*text는 텍스트만, text[0:2] 는 텍스트중 맨 앞 두개, strip은 앞뒤 공간 여백 없애기
for music in musics:
title = music.select_one('td.info > a.title.ellipsis').strip
rank = music.select_one('td.number').text[0:2]
singer = music.select_one('td.info > a.artist.ellipsis').text
print(rank, title, singer)
'프로그래밍 > 개발일지' 카테고리의 다른 글
[스코클] 비개발자를 위한 웹개발 종합반-4주차 (0) | 2022.10.17 |
---|---|
[스코클] 엑셀보다 쉬운 SQL - 완주회고 (0) | 2022.10.17 |
[스코클] 엑셀보다 쉬운 SQL - 4주차 (0) | 2022.10.13 |
[스코클] 비개발자를 위한 웹개발 종합반-2주차 (0) | 2022.10.13 |
[스코클] 엑셀보다 쉬운 SQL - 3주차 (0) | 2022.10.12 |