여러개의 빈 리스트 선언 후 조건에 따라 빈리스트에 적절히 값을 집어넣고 싶습니다

조회수 1030회
JNA = []
KAL = []
AAR = []
JJA = []
ABL = []
TWB = []
ASV = []

airlines = ['lj-jna', 'ke-kal', 'oz-aar', '7c-jja', 'bx-abl', 'tw-twb', 'rs-asv']

for i in airlines:
    driver.get('https://www.flightradar24.com/data/airlines/%s' % i)
    driver.find_element_by_css_selector('nav > a:nth-child(3)').click()
    driver.find_element_by_css_selector('#list-aircraft > dt:nth-child(2)').click()
    try:
        driver.find_element_by_css_selector('#list-aircraft > dt:nth-child(4)').click()
    except:
        pass
    fleet = driver.find_elements_by_css_selector('td:nth-child(1) > a')
    airline_code = driver.find_element_by_css_selector('div.row.m-t-l.m-l-l > h2').text[3:]
    for j in fleet:
        airline_code.append(j.text)

https://www.flightradar24.com/ 란 사이트에서 스크래핑을 하고 싶습니다

위의 빈 리스트(JNA, KAL, AAR 등)에 fleet 정보를 집어넣고 싶습니다.

airline_code 실행시 'JNA', 'KAL, 'AAR' ... 등이 나옵니다.

이거에 맞춰서 빈 리스트에 집어넣고 싶은데 airline_code.append(j.text)을 하면 'str' object has no attribute 'append' 오류가 뜹니다. 리스트 JNA와 airline_code의 'JNA'는 다른거 같은데 어떻게 해야 반복문을 통해 노가다 없이 빈리스트에 넣을 수 있을까요?

1 답변

  • 좋아요

    1

    싫어요
    채택 취소하기

    원하시는 것은 dict형일 것입니다. https://wikidocs.net/16043

    아래 코드가 돌아가는지 시험해봐 주세요.

    scrapped = {}
    airlines = ['lj-jna', 'ke-kal', 'oz-aar', '7c-jja', 'bx-abl', 'tw-twb', 'rs-asv']
    
    for i in airlines:
        driver.get('https://www.flightradar24.com/data/airlines/%s' % i)
        driver.find_element_by_css_selector('nav > a:nth-child(3)').click()
        driver.find_element_by_css_selector('#list-aircraft > dt:nth-child(2)').click()
        try:
            driver.find_element_by_css_selector('#list-aircraft > dt:nth-child(4)').click()
        except:
            pass
        fleet = driver.find_elements_by_css_selector('td:nth-child(1) > a')
        airline_code = driver.find_element_by_css_selector('div.row.m-t-l.m-l-l > h2').text[3:]
        for j in fleet:
    
            # scrapped 딕셔너리에 없는 airline_code 가 튀어나왔다면
            if airline_code not in scrapped :
    
                # 빈 목록을 값으로 주어서 새 키를 정의해 준다
               scrapped[airline_code] = []
    
            # 이제 그 airline_code 키가 갖는 배열에 원하는 값을 append 가능
            scrapped[airline_code].append(j.text)
    
    print(scrapped)
    
    • 와 잘 됩니다!! 답변 감사드립니다. 그리고 궁금한게 있습니다. 벨류 값 마지막에 ... , 'HL8025', 'HL8026', 'HL8027', '', '', '', '', '', '', ... ] (...은 생략부분) 이렇게 마지막 부분에 계속 빈 '' 이 들어가고 있는데 왜 그런건가요? 김지용 2020.10.5 05:40
    • 그건 j.text 자체에 관한 다른 질문 같습니다. 엽토군 2020.10.5 08:19
    • 아 왜그런지 알겠습니다 제가 코드를 여러번 반복하게 했습니다 답변 감사합니다! 김지용 2020.10.5 11:45

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

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

(ಠ_ಠ)
(ಠ‿ಠ)