Cómo recuperar automáticamente, dado un número de pieza de Digi-Key, información como el fabricante, número de pieza del fabricante, descripción, etc. Quizás analizando el GET http respose a:
http://search.digikey.com/scripts/DkSearch/dksus.dll?Detail&name=DK_PART_NUMBER
(gracias a angryee por los parámetros correctos)
Donde DK_PART_NUMBER es el número de pieza de Digikey.
¿Alguien sabe si tienen un servicio web o simplemente una mejor interfaz para esto?
Después de hacer esta pregunta, decidí seguir adelante y escribir algo que hiciera algunas búsquedas básicas de Digikey:
dk_pn = '587-1962-1-ND'
from urllib import urlopen
from sgmllib import SGMLParser
headers = ['Digi-Key Part Number',
'Manufacturer',
'Manufacturer Part Number',
'Description',
'Lead Free Status / RoHS Status',
'Operating Temperature',
'Standard Package',
'Price Break',
'Unit Price',
'Extended Price']
class DK_Parser(SGMLParser):
def reset(self):
SGMLParser.reset(self)
self.last_td = ''
self.inside_th = False
self.inside_td = False
self.grab_data = False
self.part_info = {}
self.hdr_index = 0
self.row_hdrs = []
def start_tr(self, attrs): # row
self.first_header_in_row = True
def start_th(self, attrs): # header cell
if self.first_header_in_row:
self.first_header_in_row = False
self.row_hdrs = []
self.hdr_index = 0
self.inside_th = True
def end_th(self):
self.inside_th = False
def start_td(self, attrs): # data cell
self.inside_td = True
def end_td(self):
self.inside_td = False
self.hdr_index = self.hdr_index+1
def handle_data(self,text):
text = text.strip()
if self.inside_th:
if text in headers:
self.row_hdrs.append(text)
self.last_td = ''
self.grab_data = True
else:
self.grab_data = False
elif self.inside_td and self.grab_data:
if self.hdr_index:
self.last_td = ''
if self.hdr_index < len(self.row_hdrs):
self.last_td = self.last_td + text
self.part_info[self.row_hdrs[self.hdr_index]] = self.last_td
dk_url = 'http://search.digikey.com/scripts/DkSearch/dksus.dll'
dk_params = '?Detail&name='
sock = urlopen(dk_url + dk_params + dk_pn)
parser = DK_Parser()
parser.feed(sock.read())
sock.close()
parser.close()
for k,v in parser.part_info.items():
print k,":",v
Solo se captura la primera línea de datos de la tabla [ruptura de precio / precio unitario / precio extendido].
components
bom
apalopohapa
fuente
fuente
Respuestas:
Desea utilizar la opción de detalle en lugar de la palabra clave. Me gusta esto:
http://search.digikey.com/scripts/DkSearch/dksus.dll?Detail&name=458-1003-ND
Eso devuelve una página HTML que es texto que se puede analizar. Todo está en formato de tabla para que pueda crear una lista de términos que le interesen y analizar los valores. Puedo ver una secuencia de comandos de la lista de partes que toma una lista de partes y los valores que desea recuperar (es decir, Voltaje, Corriente máxima o, sin embargo, Digikey lo enumera) y luego hacer un poco de Python para leer el número de parte, tomar la página, analizar la información y pegarla en un archivo CSV, base de datos o HTML. He estado pensando en algo similar y no parece demasiado difícil. Bueno, lo suficientemente difícil como para evitar que lo saque ahora mismo de todos modos :)
fuente
¿Quizás podrías hacerlo a través de la API de Octopart ?
fuente
La mejor respuesta actual es https://services.digikey.com/ como ' El servicio web de búsqueda de Digi-Key (SWS) y el servicio web de pedidos (OWS) proporcionan a los clientes acceso en tiempo real a la amplia base de datos de productos y pedidos de Digi-Key sistema. '.
Lo que está haciendo es "raspar la pantalla", que es vulnerable a romperse cuando DigiKey actualiza su sitio web.
fuente
Aquí hay un código de muestra en python, ruby y JS para hacer esto con la API de Octopart
http://octopart.com/api/docs/v3/overview#bom-matching
Puede filtrar Digikey en el nivel de aplicación.
fuente
Si mantiene su BOM como una hoja de cálculo de MS Excel, puede extraer los precios directamente en una hoja de trabajo a través de Datos-> Obtener datos externos-> De la web. Estoy usando Excel 2010. Aquí hay una macro que hice usando la grabadora de macros.
fuente