교보문고 리뷰 크롤링이 안됩니다.

조회수 860회

네이버 베스트셀러 (yes24) 목록을 가져와서 해당 책의 교보문고 페이지로 이동한 후 해당 페이지에서 클로버 리뷰 (한줄평)을 가져오고 싶은데요 작동이 안됩니다.

주석으로 표시한 부분만 제대로 작동을 하지 않습니다. 코드가 실행은 되는데 빈칸으로 출력됩니다. 올바르게 리뷰를 가져올 수 있는 방법을 알고싶습니다.

`이미지` 이미지

//from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager
from bs4 import BeautifulSoup
import time


url = "https://book.naver.com/bestsell/bestseller_list.naver"

driver = webdriver.Chrome(ChromeDriverManager().install())
driver.implicitly_wait(30)

driver.get(url)
bsObject = BeautifulSoup(driver.page_source, 'html.parser')

book_page_urls = []
for index in range(0, 25):
    dl_data = bsObject.find('dt', {'id':"book_title_"+str(index)})
    link = dl_data.select('a')[0].get('href')
    book_page_urls.append(link)

for index, book_page_url in enumerate(book_page_urls):

    driver.get(book_page_url)
    bsObject = BeautifulSoup(driver.page_source, 'html.parser')

    # title, isbn 추출
    title = bsObject.find('meta', {'property':'og:title'}).get('content')
    isbn = bsObject.select_one('#container > div.spot > div.book_info > div.book_info_inner > div:nth-child(3)').text

    # index, title, isbn 출력
    print(index+1, title, isbn)

    kyobo_page_urls = []
    for index in range(0, 1) :
        kyobo_review_data = bsObject.find_all('div', {'class':"npay_wrap"})[1]
        kyobo_review_link = kyobo_review_data.select('a')[0].get('href')
        kyobo_page_urls.append(kyobo_review_link)

        print(kyobo_review_link)


    # 돌아가지 않는 문제 부분
    for index, kyobo_page_url in enumerate(kyobo_page_urls):

        driver.get(kyobo_page_url)
        bsObject = BeautifulSoup(driver.page_source, 'html.parser')

        a = bsObject.select('div.comment_wrap')

        for asd in a : 
            kyobo_review = asd.select_one('dd.comment > div.txt').text

            print(kyobo_review)

1 답변

  • #from selenium.webdriver.common.by import By
    #a = bsObject.select('div.comment_wrap')
    #a = driver.find_element(By.CSS_SELECTOR, 'div.nav_page > ul.tab_detail_content > li:nth-of-type(3)')
    #a.click()
    driver.get(kyobo_page_url + '#review')
    time.sleep(20)
    a = bsObject.select('dd.comment > div.txt')
    for asd in a : 
        #kyobo_review = asd.select_one('dd.comment > div.txt').text
        kyobo_review = asd.text
        print(f'kyobo_review = {kyobo_review}')
    
    • ㅠㅠ 똑같이 리뷰를 불러오지 못합니다... Oh Soo min 2022.6.7 11:13
    • 원래 코드와 같이 굴러는 가는데 아무것도 출력되지 않습니다. Oh Soo min 2022.6.7 11:46
    • 내용 수정 초보자 2022.6.7 11:50
    • File "c:\Users\o3o_1\OneDrive\바탕 화면\project\kyobo_test.py", line 49, in a = bsObject.find_element(By.CSS_SELECTOR, 'div.nav_page > ul.tab_detail_content > li:nth-of-type(3)') TypeError: 'NoneType' object is not callable 라고 오류가 납니다 Oh Soo min 2022.6.7 12:02
    • 페이지 로드될 때까지 대기시키세요. 초보자 2022.6.7 12:17
    • driver.implicitly_wait(10) 을 사용해서 대기시키면 될까요? Oh Soo min 2022.6.7 12:32
    • 아무거나 상관없습니다. 10초 정도 대기시키세요. 초보자 2022.6.7 12:39
    • Traceback (most recent call last): File "c:\Users\o3o_1\OneDrive\바탕 화면\project\kyobo_test.py", line 49, in a = bsObject.find_element(By.CSS_SELECTOR, 'div.nav_page > ul.tab_detail_content > li:nth-of-type(3)') TypeError: 'NoneType' object is not callable 대기를 시켜도 똑같이 오류가 뜨네요 Oh Soo min 2022.6.7 12:48
    • 내용 수정 초보자 2022.6.7 13:12
    • 페이지가 스크롤 되면서 클로버 리뷰와 리뷰 사이쪽으로 이동은 하는데 여전히 리뷰는 불러오지 못합니다. Oh Soo min 2022.6.7 19:03
    • 다 돌려보고 드린거라 그냥 그쪽 문제라고밖에 생각되지 않습니다. 초보자 2022.6.8 08:49
    • ㅠㅠ 컴퓨터를 좀 고쳐봐야겠네요. 도움 주셔서 감사합니다. Oh Soo min 2022.6.8 12:40

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)