본문 바로가기
IT/파이썬

11번가 오픈api 파이썬으로 상품 조회하기

by SageIN 2019. 11. 28.

http://openapi.11st.co.kr/openapi/OpenApiFrontMain.tmall

 

 

Everytime 십일절 - 11번가

11번가(주)(04637) 서울특별시 중구 한강대로 416 (남대문로5가, 서울스퀘어)대표이사 : 이상호 사업자등록번호 : 815-81-01244통신판매업신고 : 2018 - 서울중구 - 1445Tel : 1599 - 0110Fax : 02 - 849 - 4962 11번가(주)(04637) 서울특별시 중구 한강대로 416 (남대문로5가, 서울스퀘어) 대표이사 : 이상호사업자등록번호 : 815-81-01244통신판매업신고 : 2018 - 서울중구 - 144

openapi.11st.co.kr

11번가 오픈 api를 통해서 상품검색, 주문 수집, 반품 교환 처리등등 많은

일들을 처리할 수 있습니다.

단 셀러 일경우에만 모든 api를 사용 가능합니다.

일반 Open API는 상품과 카테고리 조화만 가능합니다.

 

파이썬으로 상품 api에서 11번가에 등록되어 있는 상품을 api를 통해 조회 해보도록 하겠습니다.

방법도 상당히 간단합니다.

requests.get() 함수로 호출한 후

받아온 

xml 데이터를 파싱하는

작업만 하면 됩니다.

import requests

requests를 임포트 합니다.

key ="11번가에서 제공받은 오픈api키"
keyword = "검색하고자 하는 키워드" 
url ="http://openapi.11st.co.kr/openapi/OpenApiService.tmall?key="+key+"&apiCode=ProductSearch&keyword="+keyword

11번가에서 사용자 등록을 하고나면

주어지는 api키와 검색하고자 하는 키워드 url에 넣어줍니다.

req = requests.get(url)
xmlRowdata = req.content.decode('cp949')

requests 호출후 나온 데이터에 한글이 나오도록 디코딩해줍니다.

xml 데이터를

보기좋게 파싱하는 작업을 해야합니다.

<Products>
<TotalCount>74641</TotalCount>
<Product>
<ProductCode>2391628905</ProductCode>
<ProductName>
<![CDATA[ ASRock Z390 EXTREME 4 디앤디컴 /인텔 커피레이크 ]]>
</ProductName>
<ProductPrice>241480</ProductPrice>
<ProductImage>
<![CDATA[
http://i.011st.com/t/080/pd/19/6/2/8/9/0/5/fgMYB/2391628905_B.jpg
]]>
</ProductImage>
<ProductImage100>
<![CDATA[
http://i.011st.com/t/100/pd/19/6/2/8/9/0/5/fgMYB/2391628905_B.jpg
]]>
</ProductImage100>

 파이썬에서 할 수있는 여러방법이 있지만

BeautifulSoup을 이용하여 파싱합니다.

BeautifulSoup를 import  해주고

from bs4 import BeautifulSoup as bs

soup = BeautifulSoup(xmlRowdata,'html.parser')

원하는 데이터를 추출하는 건 html 파싱할때에 비슷합니다.

모든 사진을 찾는다면 

for i in soup.find_all("productimage"):
    print(i)

다른 데이터는 비슷하게 응용하면 되겠죠.

전체코드는 

import requests
from bs4 import BeautifulSoup
def api():

  key ="11번가에서 제공받은 오픈api키"
  keyword = "검색하고자 하는 키워드" 
  url ="http://openapi.11st.co.kr/openapi/OpenApiService.tmall?key="+key+"&apiCode=ProductSearch&keyword="+keyword
  req = requests.get(url)
  xmlRowdata = req.content.decode('cp949')
  soup = BeautifulSoup(xmlRowdata,'html.parser')
  for i in soup.find_all("productimage"):
  	print(i)


if __name__ == '__main__':
    api()

 

댓글0