• 카테고리

    질문 & 답변
  • 세부 분야

    데이터베이스

  • 해결 여부

    미해결

안녕하세요 강사님.

20.04.12 20:23 작성 조회수 120

0

많은 질문에 항상 친절히 답변해주셔서 감사합니다.     

오늘은

[실전] 크롤링과 데이터베이스 - 크롤링 데이터 DB 자동 저장 코드와 팁1 강의에서 provider 데이터까지 추출하는 부분에서 궁금증이 생겨 질문드립니다. 아래 강사님이 작성하신 코드 중에서

provider = soup.select_one('div.item-info_headline > p > a > strong') 처럼 select_one을 한 경우에는 정상적으로 출력되고 _one 없이 select를 하면 오류가 생기는 점을 발견했습니다. 

strong 태그 div.item-info_headline 하위 태그에 strong  태그는 하나 밖에 없기때문에, select만 써도 괜찮다고 생각하였는데  오류가 난 점이 의문스러워 질문드립니다.

오늘도 즐거운 하루되셨길 바라겠습니다.

       product_link = item.select_one('div.thumb > a')

        item_code = product_link.attrs['href'].split('=')[1]

        

        res = requests.get(product_link.attrs['href'])

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

        provider = soup.select_one('div.item-info_headline > p > a > strong')

        if provider == None:

            provider = ''

        else:

            provider = provider.get_text()

답변 1

답변을 작성해보세요.

0

문의하신 부분으 select_one 으로는 추출이 되는데, select 로는 추출이 안된다고 하신거죠?

그럴리는 없습니다. select 로 하면, 해당 변수는 리스트가 되기 때문에, 확인 방법이 다를 뿐이라고 보여져요.

리스트는 가볍게 for 구문으로 각 아이템을 빼내서 확인하셔야 합니다.

lists = select('ul')

for item in lists:

    print(item.get_text())

와 같은 형태로 리스트는 추출방법이 다릅니다. 

파이썬 문법과 관련한 부분이라 이런 부분들은 다음 강의를 통해 역량을 쌓으실 수 있으실 꺼예요

파이썬입문과 크롤링기초 부트캠프 (2020 업데이트) [쉽게! 견고한 자료까지!]