카테고리 없음
파이썬으로 웹 스크랩핑하기(Web scraping, beautifulsoup4)
상어군
2022. 9. 13. 22:21
반응형
1. 라이브러리 인스톨
beautifulsoup4 인스톨하기
pip install beautifulsoup4
2. 페이지 읽어오기
from urllib.request import urlopen
from bs4 import BeautifulSoup
url = '' # 스크래핑할 url
page = urlopen(url) # 해당 페이지 오픈 및 html 파일 가져오기
soup = BeautifulSoup(page, "html.parser") # html형식에 대한 파싱
3. 페이지 파싱하기
3.1 예시 페이지 준비
page = '''
<html>
<head>
<title>제목</title>
</head>
<body>
<h1>제목1</h1>
<p>내용2</p>
<h1 class='red'>제목2</h1>
<p class='blue'>
<a href="http://주소" class="web" id="shark">세부내용</a>
</p>
</body>
</html>
'''
3.2 페이지 파싱하기
from urllib.request import urlopen
#from bs4 import BeautifulSoup
#준비된 예시 page로 대체
#url = 'https://movie.naver.com/movie/sdb/rank/rmovie.naver'
#page = urlopen(url)
soup = BeautifulSoup(page, "html.parser")
# 첫번째 tag <h1>을 찾는다
tmp = soup.find("h1")
print('첫번째 tag <h1>을 찾는다')
print(tmp,'\n')
# 모든 tag <h1>을 찾는다
tmp = soup.find_all("h1")
print('모든 tag <h1>을 찾는다')
print(tmp,'\n')
# class red를 가지는 tag <h1>을 찾는다
tmp = soup.find("h1",{'class':'red'})
print('class red를 가지는 tag <h1>을 찾는다')
print(tmp)
find_all은 list를 반환하며 find는 한개의 값을 반환한다
이때 반환된 값은 문자열이 아니다
3.3 파싱값 세부 파싱
from urllib.request import urlopen
from bs4 import BeautifulSoup
#준비된 예시 page로 대체
#url = 'https://movie.naver.com/movie/sdb/rank/rmovie.naver'
#page = urlopen(url)
soup = BeautifulSoup(page, "html.parser")
# class blue를 가지는 tag <p>을 찾는다
tmp = soup.find("p",{'class':'blue'})
print('class blue를 가지는 tag <p>을 찾는다')
print(tmp,'\n')
# tmp 내에서 tag <a>를 찾는다
sub_tmp = tmp.find("a")
print('tmp 내에서 tag <a>를 찾는다')
print(sub_tmp,'\n')
# 찾은 tag<a>의 id값
print(sub_tmp.get('id'),'\n')
# 찾은 tag<a>의 href값
print(sub_tmp.get('href'),'\n')
# 찾은 tag<a>의 내용
print(sub_tmp.text)
# 비슷한 명령어로
# .get(key값)은 .attrs[key값] 으로 대체 가능하다
4. 파일 다운로드
from urllib.request import urlretrieve
img_url = '~~~.jpg' # 이미지 주소
urlretrieve(img_url, "movie.jpg")
반응형