<내용정리>
- 관련 파일
- 본문
# p308 응용예제 3번
class BankError(Exception):
def __init__(self, message):
super().__init__(message)
class BankAccount:
def __init__(self, acc_no, balance):
self.acc_no = acc_no
self.balance = balance
def deposit(self, money):
if money <= 0:
raise BankError(f'{money}원 입금 불가')
def withdraw(self, money):
if money <= 0:
raise BankError(f'{money}원 출금 불가')
if money > self.balance:
raise BankError(f'잔액 부족')
self.balance -= money
return money
def transfer(self, your_acc, money):
your_acc.deposit(self.withdraw(money))
def inquiry(self):
print(f'계좌번호: {self.acc_no}')
print(f'통장 잔액: {self.balance}')
# 정상 상황
me = BankAccount('012-34-56789', 50000)
you = BankAccount('987-65-43210', 50000)
try:
me.transfer(you, 5000)
except BankError as e:
print(e)
finally:
me.inquiry()
you.inquiry()
### 섹션 18 : 웹 크롤링의 이해
## 일반 웹 페이지 정보 가져오기
import requests # http 요청을 수행해서 웹페이지의 소스코드를 가져오는 라이브러리
url = 'https://www.naver.com' # 가지고 올 웹페이지 주소
response = requests.get(url)
print(response.text) # 결과를 텍스트로
print(f'응답코드 : {response.status_code}') # 응답 코드 출력
## 검색 결과 웹 페이지 정보 가져오기
import requests
url = 'https://search.naver.com/search.naver'
param = {'query':'파이썬'}
response = requests.get(url, params=param)
print(response.text)
print(f'응답코드 : {response.status_code}')
## BeautifulSoup 메소드 사용하기 - find()
from bs4 import BeautifulSoup
html = '''
<div>
네이버</a>
카카오</a>
</div>
'''
soup = BeautifulSoup(html, 'html.parser')
print(soup.find('a')) # 태그 가져오기
print(soup.find('a').text) # 태그 내용
print(soup.find('a').get('href')) # 속성값
## BeautifulSoup 메소드 사용하기 - find_all() >> 리스트형식
from bs4 import BeautifulSoup
html = '''
<ul>
<li id = "movie">영화</li>
<li>여행</li>
<li>독서</li>
<ul>
'''
soup = BeautifulSoup(html, 'html.parser')
print(soup.find_all('li')) # 태그(리스트형식)
print(soup.find_all('li')[0].text) # 태그내용
print(soup.find_all('li')[1].text)
print(soup.find_all('li')[2].text)
print(soup.find_all('li')[0].get('id')) # 속성값
## BeautifulSoup 메소드 사용하기 - class 속성
from bs4 import BeautifulSoup
html = '''
<div>
<div class="gnb">뉴스</div>
<div class="gnb">지도</div>
</div>
'''
soup = BeautifulSoup(html, 'html.parser')
print(soup.find_all('div', class_='gnb')) # 태그(리스트형식)
print(soup.find_all('div', class_='gnb')[0].text)
print(soup.find_all('div', class_='gnb')[1].text)
## BeautifulSoup 메소드 사용하기 - id 속성
from bs4 import BeautifulSoup
html = '''
<div id="dontainer">
<div id="left">왼쪽 영역</div>
<div id="right">오른쪽 영역</div>
</div>
'''
soup = BeautifulSoup(html, 'html.parser')
print(soup.find('div', id='left')) # 태그
print(soup.find('div', id='left').text)
print(soup.find('div', id='right').text)
# p325
import requests
from bs4 import BeautifulSoup
url = 'https://movie.naver.com/movie/bi/mi/basic.naver'
param = {'code':10016}
response = requests.get(url, params=param)
html = response.text
soup = BeautifulSoup(html, 'html.parser')
review_list = soup.find_all('div', class_='score_reple')
for review in review_list:
print(review.find('p').text.strip()) # strip : 공백이나 불필요한 글자 제거
# p326 1번
import requests
from bs4 import BeautifulSoup
url = 'https://movie.naver.com/movie/sdb/rank/rpeople.naver'
response = requests.get(url)
html = response.text
soup = BeautifulSoup(html, 'html.parser')
result_list = soup.find_all('div', class_='title')
movie_in = []
for result in result_list:
movie_in.append(result.text.strip())
for person in movie_in:
print(person)
# 2번
import requests
from bs4 import BeautifulSoup
url = 'https://movie.naver.com/movie/sdb/rank/rmovie.naver'
response = requests.get(url)
html = response.text
soup = BeautifulSoup(html, 'html.parser')
movie_list = soup.find_all('div', class_='tit3')
for idx, movie in enumerate(movie_list, start=1):
print(f'{idx}위 : {movie.text.strip()}')
'학부 자료 > Python' 카테고리의 다른 글
[Python] 파이썬 기초 18/20, 엑셀 활용 (3) | 2023.11.07 |
---|---|
[Python] 파이썬 기초 17/20, 데이터의 시각화 처리 (4) | 2023.11.07 |
[Python] 파이썬 기초 15/20, 클래스 상속, 예외처리 2(강제로 예외 발생)-raise 예제 (4) | 2023.11.07 |
[Python] 파이썬 기초 14/20, 클래스 상속, 예외처리 (1) | 2023.11.07 |
[Python] 파이썬 기초 13/20, 클래스와 객체 (2) | 2023.11.07 |