본문 바로가기
Information

[Python] 웹크롤링 이미지 저장 - 쿠팡 상품 이미지 긁어오기

by 정티그로 2021. 8. 8.

목차

    네이버 블로그를 이용해 쿠팡 파트너스를 할 때 꼭 이미지를 넣어야 하는 것은 아니지만 이미지가 있고 없고의 차이는 크다. 이왕이면 넣는 것이 좋다. 사람들이 글자보다는 이미지를 인식하는게 훨씬 빠르기 때문이다.

     

    처음에는 간단한 캡쳐도구(글쓴이는 알 캡처를 사용한다.)를 이용해 상품 이미지를 가져왔다. 같은 작업을 계속하다 보니, 자동화하고 싶다는 생각이 들었다.

     

    Beautifulsoup과 파이썬 기능을 이용하면, 쉽게 가져올 수 있겠다는 결론에 도달했고, 바로 실행으로 옮겨보았다.

     

    '제주삼다수 그린' 상품의 이미지(빨간색 표시되어 있는 영역)를 가져와보겠다. 

    분명 이 이미지가 저장되는 위치가 있을 것이다. 그것을 찾아내, 해당 페이지에서 다운로드 받으면 될 것이다.

     

    크롬 개발자 도구를 이용해 이미지의 위치를 확인했다. '//thumbnail6.coupangcdn.com/ ~' 주소에 해당 이미지가 있는 것을 알 수 있다.

     

    사진 사이즈는 410 x 410px, 1:1 비율, 파일 크기는 50.4 kB인 것을 알 수 있으며, 'Current source'를 참고하면, 위치 파악도 가능하다.

     

    이미지가 있는 링크로 이동한 후, 우클릭을 눌러 이미지 저장을 하면 끝이 난다. 굉장히 간단하지만, 이런 과정을 100번, 1000번 그 이상 할 경우, 매우 많은 시간과 노력이 필요하다.

     

    우리에게는 든든한 지원군인 컴퓨터가 존재한다. 파이썬으로 코드를 작성하고, 컴퓨터에게 일을 시켜보자! 하나의 상품 이미지를 가져오면, 그 다음부터는 반복문을 이용해 다양한 상품의 이미지를 빠르게 가져올 수 있을 것이다.

     

    이미지가 있는 주소를 Beautifulsoup을 이용해 가져와야 한다. 우리가 원하는 값은 img태그 안에 있는 src의 값이다. select_one을 이용해 그 값을 가져와보겠다.

     

    개발자 도구에서 이미지의 selector를 가져오면 다음과 같다.

     

    - selector : #repImageContainer > img

     

    product_img_url = "http:"+ soup.select_one('#repImageContainer > img')['src']

     

    src에 있는 값은 'http:'가 빠져있으므로 이를 붙여서 product_img_url 이라는 변수에 저장했다.

     

    자. 이제 이미지의 링크까지 얻어냈다. 이것을 로컬로 저장을 하면 끝이나는데, 어떻게 저장을 할까?

    웹에 있는 이미지를 저장하기 위해서는 urllib.request.urlretrieve을 사용하면 된다.

     

    urllib.request.urlretrieve(URL, filename) 형식이다. 파일이름은 '이미지.jpg'로 했고, URL은 아까 product_img_url 변수에 저장을 했으니, 이것을 그대로 적어주면 된다.

     

    #전체코드
    
    import requests
    from bs4 import BeautifulSoup
    import urllib.request
    
    URL = 'https://www.coupang.com/vp/products/5647481827?itemId=9231892317&vendorItemId=76517595808&sourceType=CAMPAIGN&campaignId=82&categoryId=0&isAddedCart='
    
    headers = {"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.93 Safari/537.36"}
    res = requests.get(URL, headers=headers)
    res.raise_for_status()
    soup = BeautifulSoup(res.text, "lxml") 
    
    product_img_url = "http:"+ soup.select_one('#repImageContainer > img')['src']
    
    urllib.request.urlretrieve(product_img_url, "이미지.jpg")

    코드 실행을 해보면, '제주삼다수 그린' 상품 이미지가 잘 저장된 것을 볼 수 있다.

     

     

    [Python] 쿠팡 크롤링 - 상품 제목 가져오기

    이번 시간 파이썬(Python)을 이용해 웹크롤링 해볼 사이트는 바로 '쿠팡(coupang)'사이트이다. 요즘 다양한 SNS를 통해 쿠팡파트너스 홍보를 하는 사람들이 많아졌다. 유튜브에 검색을 해보더라도 쿠

    kissi-pro.tistory.com