Para implementar a funcionalidade de busca de produtos por imagem no Taobao, como a ferramenta "拍立淘", desenvolvedores podem utilizar a API item_search_img. Este conteúdo técnico detalha o processo de integração com Python.
Obtenção de Credenciais de API
Comece registrando-se na plataforma aberta do Taobao para criar uma aplicação. Após o registro, obtenha as chaves de API (app_key e app_secret) necessárias para autenticação.
Upload da Imagem para Servidor
A API requer que a imagem esteja acessível via URL. Utilize o endpoint de upload para enviar imagens locais e obter o URL correspondente.
import requests
import hashlib
import time
def calcular_assinatura(dados, segredo):
itens_ordenados = sorted(dados.items())
conteudo = ''.join([f'{chave}{valor}' for chave, valor in itens_ordenados]) + segredo
return hashlib.md5(conteudo.encode('utf-8')).hexdigest().upper()
def enviar_imagem_para_servidor(chave_app, segredo_app, caminho_arquivo):
url_base = "https://restapi.taobao.com/router/rest"
parametros_requisicao = {
'app_key': chave_app,
'method': 'taobao.upload.img',
'format': 'json',
'v': '2.0',
'timestamp': int(time.time()),
'sign_method': 'md5'
}
with open(caminho_arquivo, 'rb') as arquivo:
dados_arquivo = {'file': arquivo}
parametros_requisicao['sign'] = calcular_assinatura(parametros_requisicao, segredo_app)
resposta = requests.post(url_base, files=dados_arquivo, params=parametros_requisicao)
if resposta.status_code == 200:
conteudo = resposta.json()
if 'pic_url' in conteudo:
return conteudo['pic_url']
return None
# Exemplo de aplicação
chave_exemplo = "minha_chave_app"
segredo_exemplo = "meu_segredo_app"
arquivo_imagem = "imagens/produto.jpg"
url_imagem = enviar_imagem_para_servidor(chave_exemplo, segredo_exemplo, arquivo_imagem)
Execução da Consulta por Imagem
Com o URL da imagem, realize uma solicitação GET ao endponit de busca para recuperar produtos similares.
def buscar_produtos_por_imagem(chave_app, segredo_app, url_imagem, categoria=None, pagina=1):
url_busca = "https://api.taobao.com/imgsearch/item_search_img.do"
parametros = {
'key': chave_app,
'secret': segredo_app,
'imgid': url_imagem,
'cat': categoria if categoria else '',
'page': pagina
}
resposta = requests.get(url_busca, params=parametros)
if resposta.status_code == 200:
dados_resposta = resposta.json()
lista_itens = dados_resposta.get('items', {}).get('item', [])
for item in lista_itens:
print(f"Nome do produto: {item['title']}")
print(f"URL da imagem: {item['pic_url']}")
print(f"Preço promocional: {item['promotion_price']}")
print(f"Preço base: {item['price']}")
print(f"Unidades vendidas: {item['sales']}")
print(f"Página do produto: {item['detail_url']}")
print("-" * 30)
else:
print(f"Falha na solicitação. Código: {resposta.status_code}")
# Demonstração de uso
buscar_produtos_por_imagem(chave_exemplo, segredo_exemplo, url_imagem)
Estrutura da Resposta da API
A resposta da API é um objeto JSON contendo um array de itens. Cada item inclui atributos como título, preço, vendas e link de detalhes.
[
{
"title": "Camiseta de algodão premium para esportes",
"pic_url": "https://img.alicdn.com/imagens/produto1.jpg",
"promotion_price": "59.90",
"price": "79.90",
"sales": 1500,
"detail_url": "//item.taobao.com/item.htm?id=123456"
}
]
Limitações e Recomendações
O desempenho da API depende da qualidade da imagem e da capacidade de reconhecimento visual. Imagens ambíguas ou de baixa resolução podem gerar resultados imprecisso. Assegure-se de cumprir os termos de uso da plataforma.