커뮤니티
포인트
쿠폰
내 강의실
국비 신청 내역
증명서
계정
로그아웃
학습 질문
개발 일지
나의 활동
답변 완료
3-9 웹스크래핑(크롤링) 기초 강의 중 응용 질문!!
undefined주차
북마크
안*승
댓글
3
추천
0
조회수
7
조회수
7
답변 완료

* 겪고 있는 문제 상황을 최대한 자세하게 작성해주세요.

* 문제 해결을 위해 어떤 시도를 해보았는지 구체적으로 함께 알려주세요.


3-5에서 배운 내용을 복습하다 네이버 시리즈 랭킹을 스크래핑 하려고 했는데

1~100위 까지인데 76까지밖에 스크래핑이 되지 않았습니다.

카피 셀렉터해서 내용을 보니 코드가 77번부터는 달라서 그런것 같긴한데

1~100위까지 스크래핑 하려고하면 어떤 방식으로 해야하는지, 아니면 어떻게 구글링 해봐야 할지도 궁금합니다.



스파르타 즉문즉답




작성한 코드 및 에러 메세지

import requests
from bs4 import BeautifulSoup

from pymongo import MongoClient
client = MongoClient('mongodb+srv://test:sparta@cluster0.7nqdbsx.mongodb.net/Cluster0?retryWrites=true&w=majority')
db = client.dbsparta

headers = {'User-Agent' : 'Mozilla/5.0 (Windows NT 10.0; Win64; x64)AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36'}
data = requests.get('https://serieson.naver.com/v3/broadcasting/ranking/realtime',headers=headers)

soup = BeautifulSoup(data.text, 'html.parser')


#container > div.RankingPage_ranking_wrap__GB855 > ol > li:nth-child(1) > a > div.RankingItem_info_area__BJN3M > div.RankingNumber_ranking_area__p6fZq > em > span
#container > div.RankingPage_ranking_wrap__GB855 > ol > li:nth-child(2) > a > div.RankingItem_info_area__BJN3M > div.RankingNumber_ranking_area__p6fZq > em > span
#container > div.RankingPage_ranking_wrap__GB855 > ol > li:nth-child(10) > a > div.RankingItem_info_area__BJN3M > div.RankingNumber_ranking_area__p6fZq > em > span.RankingNumber_num_1__KUsGK
#container > div.RankingPage_ranking_wrap__GB855 > ol > li:nth-child(12) > a > div.RankingItem_info_area__BJN3M > div.RankingNumber_ranking_area__p6fZq > em > span.RankingNumber_num_1__KUsGK
#container > div.RankingPage_ranking_wrap__GB855 > ol > li:nth-child(77) > a > div.RankingItem_info_area__BJN3M > div.RankingNumber_ranking_area__p6fZq > em > span:nth-child -> 77번


dramas = soup.select('#container > div.RankingPage_ranking_wrap__GB855 > ol > li')

for drama in dramas:
    a = drama.select_one('div.RankingItem_info_area__BJN3M > div.RankingItem_title_area__TWYQV > span')
    if a is not None:
        title = a.text
        rank = drama.select_one('div.RankingItem_info_area__BJN3M > div.RankingNumber_ranking_area__p6fZq > em').text
        print(rank,title)

    doc ={
        'rank':rank,
        'title':title,
    }
    db.dramas.insert_one(doc)



취소
 공유
취소
댓글 0
댓글 알림
나의얼굴