편집 기록

편집 기록
  • 프로필 nowp님의 편집
    날짜2022.06.07

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


    네이버 베스트셀러 (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)
    
  • 프로필 Oh Soo min님의 편집
    날짜2022.06.06

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


    네이버 베스트셀러 (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)