인프런 커뮤니티 질문&답변

최형진님의 프로필 이미지
최형진

작성한 질문수

실습으로 끝장내는 웹 크롤링과 웹 페이지 자동화 & 실전 활용

무비차트 모든 영화의 예매율, 개봉 날짜등 기타 정보 모두 가져오기

무비차트 모든 영화의 예매율, 개봉 날짜등 기타 정보 모두 가져오기 과정 중 질문입니다.

작성

·

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개 존재합니다.

그렇기때문에 갯수를 확인했을때 차이가 생기게 됩니다.

최형진님의 프로필 이미지
최형진
질문자

저녁에 다시 한 번 해보겠습니다! 답글 감사합니다!

0

김플님의 프로필 이미지
김플
지식공유자

강의를 보고 코드를 변경하신건가요?

최형진님의 프로필 이미지
최형진
질문자

안녕하세요!! 여러가지 방법으로 해보라고 하셔서 화면 멈춰놓고 이것저것 해보면서 따라하고 있는데

저 부분은 화면을 영상에 있는 코드를 따라해도 길이 결과가 자꾸 20개로 나옵니다..

최형진님의 프로필 이미지
최형진

작성한 질문수

질문하기