Comment récupérer automatiquement, en fonction d'un numéro de pièce Digi-Key, des informations telles que le fabricant, le numéro de pièce du fabricant, la description, etc. Peut-être en analysant la réponse http GET pour:
http://search.digikey.com/scripts/DkSearch/dksus.dll?Detail&name=DK_PART_NUMBER
(merci à angryee pour les bons paramètres)
Où DK_PART_NUMBER est le numéro de pièce Digikey.
Quelqu'un sait-il s'il a un service Web ou simplement une meilleure interface pour cela?
Après avoir posé cette question, j'ai décidé d'aller de l'avant et d'écrire quelque chose qui a fait une récupération de base 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
Seule la première ligne de données du tableau [prix cassé / prix unitaire / prix étendu] est saisie.
components
bom
apalopohapa
la source
la source
Réponses:
Vous souhaitez utiliser l'option de détail au lieu du mot clé. Comme ça:
http://search.digikey.com/scripts/DkSearch/dksus.dll?Detail&name=458-1003-ND
Cela renvoie une page HTML qui est du texte qui peut être analysé. Tout est au format tableau afin que vous puissiez créer une liste de termes qui vous intéressent et analyser les valeurs. Je peux voir un script de liste de pièces qui contient une liste de pièces et les valeurs que vous souhaitez récupérer (c.-à-d. Tension, courant maximal ou Digikey le répertorie), puis créer du Python pour lire le numéro de pièce, saisir la page, analyser les informations et les coller dans un fichier CSV, base de données ou HTML. J'ai pensé à quelque chose de similaire et cela ne semble pas trop difficile. Eh bien, assez dur pour m'empêcher de le fouetter maintenant quand même :)
la source
Peut-être pourriez-vous le faire via l'API Octopart ?
la source
La meilleure réponse actuelle est https://services.digikey.com/ comme `` Le service Web de recherche Digi-Key (SWS) et le service Web de commande (OWS) fournissent aux clients un accès en temps réel à la vaste base de données de produits et de commande de Digi-Key. système. ".
Ce que vous faites est un "grattage d'écran", qui est vulnérable à la rupture lorsque DigiKey met à jour son site Web.
la source
Voici un exemple de code en python, ruby et JS pour le faire avec l'API d'Octopart
http://octopart.com/api/docs/v3/overview#bom-matching
Vous pouvez filtrer Digikey au niveau de l'application.
la source
Si vous conservez votre nomenclature sous forme de feuille de calcul MS Excel, vous pouvez extraire les prix directement dans une feuille de calcul via Données-> Obtenir des données externes-> À partir du Web. J'utilise Excel 2010. Voici une macro que j'ai créée à l'aide de l'enregistreur de macros.
la source