
강의 중에, 최종 답안 파이썬이 아래와 같았는데요.
movies = soup.select('#old_content > table > tbody > tr')
for movie in movies:
a= movie.select_one('td.title > div > a')
if a is not None :
title = a.text
rank = movie.select_one('td:nth-child(1) > img')['alt']
star = movie.select_one('td.point').text
print(rank, title, star)
강의중에는 결과가 잘 나왔기때문에 특별히 의문을 갖지 않았는데,
다시 따라해보니까 이해가 잘 안가서요.
해보니까 제목 뿐만 아니라 랭크와 별점의 html에도 None이 있더군요.
그러면 title에서처럼 rank와 star를 크롤링할때도
조건문으로 None을 제거해줘야하는데,
어쨌든 a라는 변수는 title을 뽑기 위해서 'td.title > div > a에서 뽑은거잖아요?
그러면 a가 None이 아니다라는 조건문은 오로지 title에서만 유효한거 아닌가요?
즉, 조건문 이하에 포함되어있더라도 rank와 star의 None은 제거되지 않아야하는거 아닌가요?
(rank와 star는 a라는 변수랑 상관이 없다고 생각하기 때문에)
궁금합니다.
제가 생각한 이상적인 답변은 아래와 같아요.
movies = soup.select('#old_content > table > tbody > tr')
for movie in movies :
A = movie.select_one('td:nth-child(1) > img')
if A is not None:
rank = A['alt']
print(rank)
B = movie.select_one('td.title > div > a')
if B is not None:
title = B.text
print(title)
C = movie.select_one('td.point')
if C is not None:
star = C.text
print(star)
