res = req.get('https://movie.naver.com/movie/bi/mi/point.naver?code=45290')
soup = bs(res.text, 'lxml')
soup.select('div.score_reple > p > span')
- 접근이 불가능하기때문에
.select
의 결과가 비어있다.- 이때 개발자도구
F12
에서Ctrl+F
를 사용해서iframe
을 검색해src
를 찾아낸다.
주의: 전체 url을 채워줘야함
https://movie.naver.com/movie/bi/mi/pointWriteFormList.naver?code=45290&type=after&isActualPointWriteExecute=false&isMileageSubscriptionAlready=false&isMileageSubscriptionReject=false
로 요청import requests as req
from bs4 import BeautifulSoup as bs
res = req.get('https://movie.naver.com/movie/bi/mi/pointWriteFormList.naver?code=45290&type=after&isActualPointWriteExecute=false&isMileageSubscriptionAlready=false&isMileageSubscriptionReject=false')
soup = bs(res.text, 'lxml')
div.score_reple > p > span._filtered_men_0
id
선택자는 여러 요소를 선택하기에는 부적절하다.
div.score_reple > p > span:nth=chile(2)
선택자를 정확하게 쓰는 방법이 가장 좋지만,
span
이 하나밖에 없는 요소도 있다면?
그래서 위와 같은 선택자로는 안된다.
soup.select('div.score_reple > p')
문제점: 관람객까지 함께 나온다
해결방법: 관람객 요소만 추출해서 지우자
viewer = soup.select('span.ico_viewer')
extract()
: 추출하다for i in viewer:
i.extract()
review = soup.select('div.score_reple > p')
for i in review:
print(i.text)
개행이 많다...그래서 개행 삭제!!
.strip()
: 개행(공백)문자 삭제for i in review:
print(i.text.strip())
url
맨 뒤의 숫자가 바뀐다.for i in range(1,101):
res = req.get('https://movie.naver.com/movie/bi/mi/pointWriteFormList.naver?code=45290&type=after&isActualPointWriteExecute=false&isMileageSubscriptionAlready=false&isMileageSubscriptionReject=false&page=' + str(i))
soup = bs(res.text, 'lxml')
viewer = soup.select('span.ico_viewer')
for i in viewer:
i.extract()
review = soup.select("div.score_reple > p")
for i in review:
print(i.text.strip())