작성
·
339
0
from bs4 import BeautifulSoup
import requests
url = "http://www.cgv.co.kr/movies/?lt=1&ft=0"
headers = {
"User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.114 Safari/537.36"
}
r = requests.get(url, headers=headers).text
soup = BeautifulSoup(r, "html.parser")
charts = soup.select("div.sect-movie-chart > ol > li")
print(len(charts)) # Output : 20 ??
for chart in charts:
title = chart.select_one("strong.title").text
percent = chart.select_one("strong.percent").get_text
print(title)
print(percent(" : "))
무비차트 페이지에 보여지는 갯수도 19개고, 개발자 도구에서 li를 세어봐도 19개인데
len()으로 보면 20개가 나오고, for 문으로 코드를 실행시키면 19번째까지 제목과 예매율 출력하고 20번째에서 에러 문구가 발생합니다.
어떤 부분을 찾아보면 될까요?
답변 2
1
영상에서의
sect_movie_chart = soup.select_one(".sect-movie-chart")
movie_chart = sect_movie_chart.select("li")
이 코드와
변경하신
charts = soup.select("div.sect-movie-chart > ol > li")
이 코드는 찾는게 다릅니다.
영상에서의 코드는 .sect-movie-chart를 한개만 찾아서 거기안에 있는 li를 찾죠.
하지만 변경하신 코드는 모든 .sect-movie-chart를 찾습니다. 확인 해보시면 화면에 .sect-movie-chart는 2개 존재합니다.
그렇기때문에 갯수를 확인했을때 차이가 생기게 됩니다.
저녁에 다시 한 번 해보겠습니다! 답글 감사합니다!