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

kshssi님의 프로필 이미지

작성한 질문수

쉽게 처음하는 파이썬 고급 크롤링 [Scrapy, Selenium, Headless Chrome]

연습문제로 이해하는 Scrapy 활용

한번에 2가지 아이템을 가져오려면 어떻게 해야하나요?

22.04.07 20:30 작성

·

207

0

강의를 보고 한번에 2가지 아이템(ex. 상품명, 가격) 을 가져오려고 여러번 시도해봤으나 계속 실패했습니다.

 

그러다 강의 내용중에 정확히 이해는 되지않으나 제가 크롤링하려는곳에 적용하니 작동하는 코드를 찾았습니다.

 

def parse(self, response):

        product_types = response.css(

            'section.recent-posts div.card-body > h2 > a::text').getall()

        product_names = response.css(

            'section.recent-posts div.card-body > h4::text').getall()

        for index, product_type in enumerate(product_types):

            item = MycrawlerItem()

            print(product_type)

            item['product_type'] = product_type.strip()

            item['product_name'] = product_names[index].strip()

            yield item

 

위의 코드를 사용해보니 한번에 2가지 아이템을 추출해서 저장할수있었습니다.

제가 형광펜으로 칠한부분의 코드가 어떤 역할을 하길래 가능한건지 좀 더 자세한 설명해주실수 있나요?

제가 개인적으로 생각했을때는 for 구문을 각가의 아이템에 작성하여 총 2번의 for 구문을 사용했을때는 작동하지 않았는데 이 또한 뭐가 문제인지 설명좀 부탁드립니다 ㅠㅠ

답변 2

0

정찬희님의 프로필 이미지

2022. 08. 02. 05:35

for title,title2 in zip(titles,titles2):

zip을 사용 하면  for문에 두 변수를 사용할 수 있습니다.

0

잔재미코딩 DaveLee님의 프로필 이미지

2022. 04. 10. 09:09

안녕하세요.

강의 내에서 나온 enumerate 함수에 대한 사용법에 대해 문의하신 것인거죠? enumerate 는 인덱스(index)와 원소를 동시에 접근하면서 반복문을 돌릴 수 있는 함수입니다. 그래서, for 구문으로 리스트를 넣으면 각 아이템만 가져올 수 있지만, enumerate 로 리스트를 넣으면, 해당 아이템뿐만 아니라, 해당 아이템의 인덱스 번호를 가져올 수 있습니다.다음 링크로 for 구문과 enumerate 구문의 차이를 좀더 상세히 참고하실 수도 있으실 것 같아요.

https://www.daleseo.com/python-enumerate/

감사합니다.

kshssi님의 프로필 이미지

작성한 질문수

질문하기