first_name = 'sunmin' # 'sunmin'을 first_name에 넣는다
last_name = 'lee' # 'lee'을 last_name에 넣는다
print(first_name+last_name) # sunminlee 출력
# 문자와 숫자를 합칠 경우
num = 2
print(first_name+num) # TypeError: can only concatenate str (not "int") to str
# 문자열로 형변환
num = str(2) # num = '2'와 같다
print(first_name+num) # sunmin2
a_list = [1,2,3]
print(a_list) # [1, 2, 3]
# 리스트에 값 추가하기
a_list.append(4) # a_list에 4를 추가한다
print(a_list) # [1, 2, 3, 4]
a_dict = {'name':'aaa','age':20}
print(a_dict['name']) # aaa 출력
print(a_dict['age']) # 20 출력
# a_dict에 'height' 추가하기
a_dict['height'] = 180
print(a_dict) # {'name': 'aaa', 'age': 20, 'height': 180}
def sum(num1, num2): # sum은 이름이고 상황에 맞게 마음대로 정할 수 있다
return num1 + num2 # num1 + num2의 값 반환
result = sum(2,3) # sum함수에 2와 3을 넣어서 호출
print(result) # 5 출력
age = 15
if age > 20:
print('성인')
else:
print('청소년') # 청소년 출력, age = 30이면 성인 출력
# 함수로 만들어보기
def is_adult(age):
if age > 20:
print('성인')
else:
print('청소년')
is_adult(30) # 성인 출력
is_adult(10) # 청소년
# 리스트
fruits = ['사과','배','배','감','수박','귤','딸기','사과','배','수박']
for ff in fruits:
print(ff) # 사과 배 배 감 수박 귤 딸기 사과 배 수박
# 수박의 갯수 세어보기
count = 0
for ff in fruits:
if ff == '수박':
count += 1
print(count) # 2 출력
# 딕셔너리
people = [{'name': 'bob', 'age': 20},
{'name': 'carry', 'age': 38},
{'name': 'john', 'age': 7},
{'name': 'smith', 'age': 17},
{'name': 'ben', 'age': 27}]
for pp in people:
print(pp['name'],pp['age']
# bob 20, carry 38, john 7, smith 17, ben 27
# age 값이 20보다 작은것만 출력하기
for p in people:
if p['age'] < 20:
print(p)
# {'name': 'john', 'age': 7} {'name': 'smith', 'age': 17}
함수나 변수 또는 클래스를 모아 놓은 파일이다. 모듈은 다른 파이썬 프로그램에서 불러와 사용할 수 있게끔 만든 파이썬 파일이라고도 할 수 있다. 우리는 파이썬으로 프로그래밍을 할 때 굉장히 많은 모듈을 사용한다. 다른 사람들이 이미 만들어 놓은 모듈을 사용할 수도 있고 우리가 직접 만들어서 사용할 수도 있다.
특정한 주제를 가진 모듈들을 모아놓아 따로 구성하면 유용하게 쓰일 수 있는데 이것이 패키지이다.
import requests # requests 라이브러리 설치 필요
# 실시간 미세먼지 현황 openAPI
r = requests.get('http://openapi.seoul.go.kr:8088/6d4d776b466c656533356a4b4b5872/json/RealtimeCityAir/1/99')
rjson = r.json()
gus = rjson['RealtimeCityAir']['row']
# 미세먼지 수치가 100보다 큰 지역만 출력하기
for gu in gus:
gu_name = gu['MSRSTE_NM']
gu_mise = gu['IDEX_MVL']
if gu_mise > 100:
print(gu_name,gu_mise)
웹 페이지를 그대로 가져와서 거기서 데이터를 추출해 내는 행위이다.
웹사이트에 http 요청을 하기 위해 사용한다.
html 문서를 탐색해서 원하는 부분만 쉽게 뽑아낼 수 있는 파이썬 라이브러리
html, xml을 파싱 할 때 주로 많이 사용한다.
import requests
from bs4 import BeautifulSoup
# 타겟 URL을 읽어서 HTML을 받아오고,
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://movie.naver.com/movie/sdb/rank/rmovie.nhn?sel=pnt&date=20200303',headers=headers)
# HTML을 BeautifulSoup 라이브러리를 활용해 검색하기 용이한 상태로 만듦
# soup라는 변수에 "파싱 용이해진 html"이 담긴 상태가 됨
# 코딩을 통해 필요한 부분을 추출하면 된다
soup = BeautifulSoup(data.text, 'html.parser')
# select를 이용해서, tr들을 불러오기
trs = soup.select('#old_content > table > tbody > tr')
# trs 반복문 돌리기
for tr in trs:
a_tag = tr.select_one('td.title > div > a') # tr안에 a가 있으면,
if a_tag in not None:
title = a_tag.text
print(title)
# 태그 안의 텍스트를 찍고 싶을 땐 -> 태그.text
# 태그 안의 속성을 찍고 싶을 땐 -> 태그['속성']
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'}
data = requests.get('https://movie.naver.com/movie/sdb/rank/rmovie.nhn?sel=pnt&date=20200303',headers=headers)
soup = BeautifulSoup(data.text, 'html.parser')
trs = soup.select('#old_content > table > tbody > tr')
for tr in trs:
a_tag = tr.select_one('td.title > div > a')
if a_tag is not None:
rank = tr.select_one('td:nth-child(1) > img')['alt']
title = a_tag.text
star = tr.select_one('td.point').text
print(rank, title, star)
파이썬 문법은 후에 문법 강의를 보면서 더 공부할 예정이므로 지금은 어떻게 쓰이는지 정도만 알면 될 것 같고, 웹스크래핑은 아직 많이 부족하지만 연습을 많이 해서 부족한 부분을 채워 나가야겠다.