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

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

미니미님의 프로필 이미지
미니미

작성한 질문수

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

직접 작성해보며 익숙해지기: 크롤링 기본 연습문제 풀기 (업데이트)

[바로 실전 크롤링해보기: 네이버 쇼핑 사이트 크롤링하기] 편 코드 중 질문드립니다.

작성

·

406

0

 

import requests

from bs4 import BeautifulSoup

site_list = ['https://search.shopping.naver.com/best100v2/detail.nhn?catId=50000000, https://search.shopping.naver.com/best100v2/detail.nhn?catId=50000002']

for site in site_list:

    res = requests.get(site)

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

    data = soup.select('#productListArea > ul > li> p > a')

    print(site)

    for item in data:

        print(item.get_text())

[바로 실전 크롤링해보기: 네이버 쇼핑 사이트 크롤링하기]

에서 진행하신 크롤링인데 선생님과 완전히 동일하게 코드를 작성했는데 다른 결과가 나오네요. 저의 경우 사이트 링크 1개만 출력됩니다. 왜 그런지 알 수 있을까요?

늘 좋은 강의 잘 듣고 있습니다.

감사합니다! 

답변 1

0

안녕하세요

공유해주신 코드에서 site_list로 리스트 변수를 만드실 때, 

따옴표를 열고'  닫을 때, ' 닫는 기호가 ['    '] 맨 끝에 놓으셔서, 사이트 링크 두개가 하나의 사이트 링크인것처럼 설정되어 있어서 그렇습니다.

예를 들어, ['A', 'B'] 와 같이 작성하셔야, 해당 리스트가 'A' 와 'B'를 가질 텐데, ['A, B'] 와 같이 적으셔서, 해당 리스트는 'A, B' 라는 데이터 하나만 가지게 된 상황이 되었고, 그래서 해당 링크 두개가 묶여 있는 상태에서 request를 하니 결과도 나오지 않는 상태가 되었습니다. 다음 코드로 비교해보시면 더 좋을 것 같습니다. 미세한 실수에 대해서 찬찬히 원인을 코드하나씩 확인해보시면서, 체크해보시는 연습을 하시면 더 금방 하시고자 하시는 프로그래밍을 잘 하실 수 있으실 것 같습니다. 감사합니다.

-----------

site_list = ['https://search.shopping.naver.com/best100v2/detail.nhn?catId=50000000', 'https://search.shopping.naver.com/best100v2/detail.nhn?catId=50000002']

위와 같이 site_list만 바꿔보시면 바로 실행이 됩니다.

-----------

미니미님의 프로필 이미지
미니미

작성한 질문수

질문하기