# 기본 연산
a = 3
b = 2
print(a + b)
# 문자 자료형
a = '대한'
b = '민국'
print(a + b)
# 리스트형
a = ['사과','배','감']
print(a[0])
print(a[2])
# Dictionary 형
a= {'name':'영수','age':24}
print(a)
print(a['name'])
# 함수 1
# Python에서는 {} 대신 콜론(:)
# Python에서는 줄을 반드시 맞춰야 실행된다
def hey():
print('헤이!')
hey()
# 함수 2
def sum(a, b, c): # 1, 2, 3 이 각각 a, b, c 에 들어간다
return a+b+c # 6
result = sum(1, 2, 3) # return 에 의해 6으로 변한다
print(result)
# 조건문
age = 25
if age > 20:
print('성인')
else:
print('청소년')
# 반복문 (+ 조건문)
ages = [5, 10, 13, 23, 25, 9]
for a in ages: # ages 에서 데이터를 하나씩 가져와서 a 에 넣는다
if a > 20:
print('성인')
else:
print('청소년')
가상환경 : 라이브러리를 담아두는 폴더
(venv)
python -m venv venv
pip install requests
명령어로 패키지를 설치하기만약 파이썬 패키지 설치 시, 에러 발생한다면?
참고: 파이썬 pip 에러
pip install bs4
명령어로 패키지를 설치하기(Beautiful Soup)
크롤링을 더욱 쉽고 빠르게 해줄 수 있게 만듦
import requests
r = requests.get('http://spartacodingclub.shop/sparta_api/seoulair')
rjson = r.json()
rows = rjson['RealtimeCityAir']['row']
for a in rows:
gu_name = a['MSRSTE_NM']
gu_mise = a['IDEX_MVL']
print(gu_name, gu_mise)
import requests
from bs4 import BeautifulSoup
URL = "https://movie.daum.net/ranking/reservation"
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'}
data = requests.get(URL, headers=headers)
soup = BeautifulSoup(data.text, 'html.parser')
# select_one : 하나만 가져오기
# '' 안에는 selector 복사로 가져온 내용을 붙여넣기
title = soup.select_one('#mainContent > div > div.box_ranking > ol > li:nth-child(9) > div > div.thumb_cont > strong > a')
print(title) # 출력 결과 : <a class="link_txt" data-tiara-layer="moviename" href="/moviedb/main?movieId=161806">스즈메의 문단속</a>
print(title.text) # 출력 결과 : 스즈메의 문단속
print(title['href']) # 출력 결과 : /moviedb/main?movieId=161806
# 기존 : li 중 9번째를 가리켰음 (li = 영화 1개)
# #mainContent > div > div.box_ranking > ol > li:nth-child(9) > div > div.thumb_cont > strong > a
# 변경 후 : 모든 li 리스트를 가져오고 싶을 때
# select : 가져오기
lis = soup.select('#mainContent > div > div.box_ranking > ol > li')
for li in lis:
# .link_txt : 설정돼 있던 클래스 이름. 이를 불러오기 위해
title = li.select_one('.link_txt').text # print(title.text) 에서 text만 여기 붙여도 의미 동일
print(title)
lis = soup.select('#mainContent > div > div.box_ranking > ol > li')
for li in lis:
rank = li.select_one('.rank_num').text # rank_num 클래스명의 데이터 가져옴
title = li.select_one('.link_txt').text.strip() # 출력 결과 中 띄어쓰기가 같이 나올 경우에 앞뒤에 띄어쓰기를 모두 제거
rate = li.select_one('.txt_grade').text.replace(',','') # 출력 결과 中 , 도 없앨 수 있음
print(rank,title)
코드에 해당 지니뮤직 'URL' 넣기
import requests
from bs4 import BeautifulSoup
URL = "https://movie.daum.net/ranking/reservation"
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'}
data = requests.get('https://www.genie.co.kr/chart/top200?ditc=M&rtm=N&ymd=20230101', headers=headers) # 지니뮤직 'URL' 넣기
soup = BeautifulSoup(data.text, 'html.parser')
trs = soup.select('#body-content > div.newest-list > div > table > tbody > tr')
for tr in trs:
number = tr.select_one('td.number').text[0:2].strip() # text[0:2] : 앞에서 두 글자만 끊는다
title = tr.select_one('td.info > a.title.ellipsis').text.strip()
singer = tr.select_one('td.info > a.artist.ellipsis').text
print(number,title,singer)
.number
만 넣으면 지저분한 형태로 출력된다.>
과 .
으로 코드를 이어준다