-
파이썬으로 웹 스크랩핑하기(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")
반응형