실습1 : 네이버 웹툰 전체 목록(제목) 가져오기
import requests
from bs4 import BeautifulSoup
url = "https://comic.naver.com/webtoon/weekday" # 접근할 url
res = requests.get(url) # 원하는 url의 정보
res.raise_for_status() # 웹페이지의 상태가 정상인지 확인
soup = BeautifulSoup(res.text, "lxml") # 가져온 HTML 문서를 파서를 통해 BeautifulSoup 객체로 만듦
# 네이버 웹툰 전체 목록 가져오기
cartoons = soup.find_all("a", attrs={"class":"title"}) # HTML 문서에서 태그명이 a이고 class 속성이 title인 값을 모두 가져옴
# class 속성이 title인 모든 "a" 요소를 반환
for cartoon in cartoons:
print(cartoon.get_text())
1. soup.find_all() 함수를 사용하여 class 속성이 title(제목)인 모든 a 요소를 가져온다.
2. 가져온 모든 a 요소의 텍스트만 출력한다.
실습2 : 내가 원하는 웹툰의 제목과 링크 가져오기
import requests
from bs4 import BeautifulSoup
url = "https://comic.naver.com/webtoon/list?titleId=179704" # 접근할 url
res = requests.get(url) # 원하는 url의 정보
res.raise_for_status() # 웹페이지의 상태가 정상인지 확인
soup = BeautifulSoup(res.text, "lxml") # 가져온 HTML 문서를 파서를 통해 BeautifulSoup 객체로 만듦
url : https://comic.naver.com/webtoon/list?titleId=179704
접근할 url은 네이버웹툰인 안나라수마나라이다. 나머지 포맷은 첫번째 실습과 똑같다.
cartoons = soup.find_all("td", attrs={"class":"title"})
1. soup.find_all() 함수를 사용하여 class 속성이 title인 모든 td 요소를 가져온다.
for cartoon in cartoons:
title = cartoon.a.get_text() # 제목 가져오기
link = "https://comic.naver.com" + cartoon.a["href"] # 속성값을 사용하여 링크 가져오기
print(title, link)
2. 웹툰의 제목과 링크를 가져온다. 링크는 "https://comic.naver.com/"가 빠진 채로 가져오기때문에 직접 붙여준다.
결과
5화 빛은 없다 https://comic.naver.com/webtoon/detail?titleId=179704&no=6&weekday=fri
4화 저주에 걸린 아이 https://comic.naver.com/webtoon/detail?titleId=179704&no=5&weekday=fri
3화 장난감의 속성 https://comic.naver.com/webtoon/detail?titleId=179704&no=4&weekday=fri
2화 구멍난 스타킹 https://comic.naver.com/webtoon/detail?titleId=179704&no=3&weekday=fri
1화 쫓아간다 https://comic.naver.com/webtoon/detail?titleId=179704&no=2&weekday=fri
예고편 https://comic.naver.com/webtoon/detail?titleId=179704&no=1&weekday=fri
전체 코드
import requests
from bs4 import BeautifulSoup
url = "https://comic.naver.com/webtoon/list?titleId=179704" # 접근할 url
res = requests.get(url) # 원하는 url의 정보
res.raise_for_status() # 웹페이지의 상태가 정상인지 확인
soup = BeautifulSoup(res.text, "lxml") # 가져온 HTML 문서를 파서를 통해 BeautifulSoup 객체로 만듦
cartoons = soup.find_all("td", attrs={"class":"title"})
# title = cartoons[0].a.get_text() # 제목 가져오기
# link = cartoons[0].a["href"] # 속성값을 사용하여 링크 가져오기
# print(title)
# print("https://comic.naver.com" + link)
for cartoon in cartoons:
title = cartoon.a.get_text() # 제목 가져오기
link = "https://comic.naver.com" + cartoon.a["href"] # 속성값을 사용하여 링크 가져오기
print(title, link)
실습3 : 네이버 웹툰 평점 구하기
import requests
from bs4 import BeautifulSoup
url = "https://comic.naver.com/webtoon/list?titleId=179704" # 접근할 url
res = requests.get(url) # 원하는 url의 정보
res.raise_for_status() # 웹페이지의 상태가 정상인지 확인
soup = BeautifulSoup(res.text, "lxml") # 가져온 HTML 문서를 파서를 통해 BeautifulSoup 객체로 만듦
실습2와 같다.
1. 평점에 커서를 올려보면 평점은 div 요소 밑에 strong 요소로 감싸져있다.
# 평점 구하기
total_rates = 0
cartoons = soup.find_all("div", attrs={"class":"rating_type"})
for cartoon in cartoons:
rating = cartoon.strong.get_text() # 평점 가져오기
total_rates += float(rating)
print(rating)
print("전체 점수 : ", total_rates)
print("평균 점수 : ", total_rates / len(cartoons))
2. soup.find_all() 함수를 사용하여 class 속성이 rating_type인 모든 div 요소를 가져온다.
3. strong 태그값을 가져와서 전체 점수와 평균 점수를 구한다.
결과
9.95
9.96
9.96
9.96
9.95
9.93
전체 점수 : 59.71
평균 점수 : 9.951666666666666
'Software > Python' 카테고리의 다른 글
[웹스크래핑] Beautifulsoup4 활용 2 - 쿠팡 (0) | 2023.01.24 |
---|---|
[웹스크래핑] HTTP Method - Get vs. Post (0) | 2023.01.18 |
[웹스크래핑] Beautifulsoup4 기본 (0) | 2023.01.15 |
[웹스크래핑] User Agent - 나를 차단한 웹페이지 접속하기 (0) | 2023.01.15 |
[웹스크래핑] 정규식(Regular Expression) (0) | 2023.01.15 |
댓글