파이썬으로 강의 크롤링연습해볼려는데 다른 곳은 되는데 이곳은 for문이 돌지 않아서 질문합니다.

조회수 809회
from selenium import webdriver
from bs4 import BeautifulSoup
import sys
import time

driver = webdriver.Chrome("c:/Users/user/Documents/VScode/chromedriver.exe")
driver.implicitly_wait (3)
URL = "http://www.mediseminar.com"
time.sleep(5) 
driver.get (URL)

soup = BeautifulSoup(driver.page_source, "html.parser")
result_monwebi = soup.select_one('#container > section.monWebiWrap > div.monWebi_wrap')

list_no = 0

for i in result_monwebi.find_all('li', attrs={'class':'swiper-slide slick-slide slick-current slick-active'}):
    list_no += 1
    semi_list = i.find('div', attrs={'class':'monWebi_txt'}).text
    print("-----" + str(list_no) + "-----" + semi_list)

driver.close()
sys.exit()

2 답변

  • 좋아요

    0

    싫어요
    채택 취소하기

    왠지는 모르겠는데.. requests문으로 바꾸고 다시 분석해서 하니깐 잘되네요.. 답변주신분들 모두 감사합니다.

    from bs4 import BeautifulSoup
    import requests
    import sys
    
    URL = "http://www.mediseminar.com"
    req = requests.get(URL)
    #print(req.encoding) - 한글이 깨져서 엔코딩 분석
    
    req.encoding='EUC-KR' # 엔코딩 변경
    
    soup = BeautifulSoup(req.text, "html.parser")
    result_monwebi = soup.select_one('#container > section.monWebiWrap > div.monWebi_wrap')
    
    list_no = 0
    
    for i in result_monwebi.find_all('li', attrs={'class':'swiper-slide'}):
        list_no += 1
        semi_list = i.find('div', attrs={'class':'monWebi_txt'}).text
        print("-----" + str(list_no) + "-----" + semi_list)
    
    
    sys.exit()
    
  • for 문의 주체가 되는 객체의 range가 0이면 for 문은 작동하지 않습니다.

    다음 예제를 비교해보세요.

    a = []
    for i in a:
        print(1)
    a = [6]
    for i in a:
        print(1)
    
    
    
    • for문이 돌긴하는데.. 결과가 하나만 나옵니다...ㅠ 사이트에서는 항목이 두 개가 프린트되어야할 걸로 보이는데.. 각각으로는 find를써서 뽑아내면 두개가 잘 크롤링되는데 말이죠..ㅠ 홍길동 2022.1.22 11:53
    • 그럼 조건을 잘못 설정한거죠. 초보자 2022.1.22 12:47

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

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

(ಠ_ಠ)
(ಠ‿ಠ)