인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

뀨구기님의 프로필 이미지
뀨구기

작성한 질문수

[리뉴얼] 파이썬입문과 크롤링기초 부트캠프 [파이썬, 웹, 데이터 이해 기본까지] (업데이트)

크롤링 질문있습니다~~

해결된 질문

작성

·

217

0

안녕하세요 선생님~~

크롤링 기초까지 다 듣고 강의목차 정보 중, '강의명-강의시간' 만 가져오는 연습 중입니다.

해결하지 못한 3가지 문제점이 있는데 해결방법 좀 부탁드립니다.

1. 실패한 코드(1)

    import requests

    from bs4 import BeautifulSoup

    res = requests.get('https://www.inflearn.com/course/Python-crawling-basic/dashboard')

    soup = BeautifulSoup(res.content,'html.parser')

    data_name = soup.find_all('a', class_='unit_item level')

    for item4 in data_name:

        print(item4.get_text())

 1) 첫 번째, '페이지 소스보기' 나 '개발자 모드'에서 제가 원하는 정보를 조회하려면

    속성이 'a' 이고, 클래스가 'unit_item level' 인 data를 크롤링해야 하는거 같은데,

    강의 목차 중 미리보기가 되는 5개 강좌만 조회되네요. 왜 그런건지 모르겠습니다.

 

2.  실패한 코드(2)

    import requests

    from bs4 import BeautifulSoup

    res = requests.get('https://www.inflearn.com/course/Python-crawling-basic/dashboard')

    soup = BeautifulSoup(res.content,'html.parser')

    a_tag = soup.find_all('div','unit_title level-item')

    b_tag = soup.find_all('div','unit_time level-item')

    for index in range(1,100):

       print(a_tag[index].get_text(), '-', b_tag[index].get_text())

강좌명과 강의시간을 따로 가져왔으나, 강의 시간이 없는 '강의준비, 파이썬 기초' 같은 항목들이 같이 조회되네요

 

    2) 'a' 속성의 'unit_item level' 클래스 이면서, 'div' 속성의 'unit_title section level'을 가져오면 될거 같은데

       우선 'a' 속성의 'unit_item level' 클래스 를 조회할 때, 미리보기 강의만 보이는게 해결되지 않았고

       특정 속성의 하위 속성만을 정의하는 방법 또한 모르겠습니다.

    3) 마지막으로 range의 범위를 현재는 1~99까지 지정해서 원하는 정보를 모두 가져올 수 있게 했지만

     결국엔 'list index out of range' 라는 에러메세지도 같이 나왔습니다.

     범위를 정할때, 1부터 존재하는 최종 번호(77)까지만 볼 수 있게 할수는 없을까요?

 

4시간동안 했는데 해결을 못했어요 ㅠ 도움 부탁드려요

 

(추가)

추가로 첫번째 실패한 코드에서 보면,

    import requests

    from bs4 import BeautifulSoup

    res = requests.get('https://www.inflearn.com/course/Python-crawling-basic/dashboard')

    soup = BeautifulSoup(res.content,'html.parser')

    data_name = soup.find_all(       'a'          , class_='unit_item level')

    for item4 in data_name:

        print(item4.get_text())

 

data_name 을 'a' 가 아닌 'div'로 조회하면 (굵은글씨 부분입니다.),

미리보기가 되는 강의들을 제외한 모든 '강의+시간' 정보를 확인할 수 있습니다.

페이지 소스엔 모든 unit_item level 로 정의된 클래스는 오직 'a' 속성에만 존재하는데

왜 '강의+시간'의 조합된 정보가 div 속성의 unit_item level 클래스로 조회할 수 있는건가요???

 

답변 1

1

안녕하세요. 항상 열심히 들어주셔서 감사합니다.

다만, 문의하신 부분은 이 부분은 조금 고민이 됩니다.

왜냐하면, 강좌에서 설명된 내용과 크롤링에 대해 답변을 드리는 것은 당연하고, 최대한 도와드리려 하는데요.

다만, 강좌에서 설명된 내용과 크롤링 코드 예제 이외에 각자 수강생분들께서 작성한 각자 원하는 사이트를 크롤링한 프로그램을 봐드리려면,

결국 제가 각자의 프로그램을 수정해드려야 하는데,  이 부분은 제가 각자가 원하는 프로그램을 만들어드리는 상황과 비슷하다보니, 현실적으로 시간적 여유가 없어서요. 한분만 봐드릴 수도 없는 것이고, 수강생 모든 분들이 요청을 하시게 된다면, 특정 분만 프로그램을 만들어드릴수도 없는 것이라서요. 심지어, 이렇게 되면, 본 강좌를 수강하시는 분들이 각자 원하는 어떤 크롤링 프로그램이든 만들어드려야 하는 상황으로 오해 아닌 오해가 생길 수도 있는 부분이라서요. 이 부분은 양해를 부탁드립니다.

마지막으로, 양해의 차원에서 처음 실패한 코드 부분만 보면, 처음 프로그램이 어떤 정보를 가져오려고 한 것인지 잘모르겠는데요.

미리보기 이외의 다른 목차들은 class가 unit_title level-item 로 확인이 됩니다. 그래서 지칭하신 unit_item level 클래스의 데이터만 가져왔기 때문에, 미리보기 관련 목차들만 가져온 것으로 보입니다.

다시 한번, 양해를 부탁드리며, 감사합니다.

 

  

뀨구기님의 프로필 이미지
뀨구기

작성한 질문수

질문하기